2017-12-09 10 views
2

私はRに新しく、Rでの試験の準備を1週間で行うことを試みています。集計()を使用してNA値をカウントし、代替としてtapply()を使用する方法

宿題に関する質問のうち、私は可能な限り多くの方法で1つの問題を解決しようとしています。時間制約の厳しいコーディング試験では、より多くのツールを用意するのが便利です。

問題は次のとおりです。私のデータセットでは、「ckm_nodes.csv

変数適用日は 医師は、医師がそれを処方し始めなかった場合は11月1953年から数えて、テトラサイクリンを処方始めた月を記録します研究が終了した1955年2月17日までに、Infとして記録されます。医師がテトラサイクリンを採用した時期がわからない場合、その値はNAです。次のように答えます。 (a)試験の各月にテトラサイクリンを処方し始めた医師は何人ですか? (b)研究中に何人もそれを処方したことがありませんでしたか? (c)NAは何人ですか?


私はaggregate()関数を使用して、各月に処方し始めた医者の数を数えようとしていました。私のベースコードは:

aggregate(nodes$adoption_date, by = nodes["adoption_date"], length), 

ですが、NA値では動作します。

私は集約関数は、NA値をカウントしてみましょうことができる方法があるかどうか、私は疑問に思うので、私は、次の言う集計()関数で、上のRのドキュメントをお読みください。

na.action

データにNA値が含まれているときにどうなるべきかを示す関数。デフォルトでは、指定された変数の欠損値は無視されます。

私はこの問題を解決し、 "na.action = NULL"を設定する方法を探った。

aggregate(nodes$adoption_date, by = nodes["adoption_date"], length, na.action = NULL) 

エラーをFUNに(Xは、[[I]]、...): 2引数が必要です '長さ' に渡され、私はこのコードを実行しようとすると、しかし、ここで何が起こっています1

順に引数を移動しようとしました:FUNで

aggregate(nodes$adoption_date, length, by = nodes["adoption_date"], na.action = NULL) 

エラー(X [I]、...): 2引数が 'length'に渡される必要があります。1

しかし、どちらも機能しません。

これを修正する方法はありますか?

***************** tapply()

一つは宿題にQ1を解決するために、 "tapply" 機能を使用できるかどうかさらに、私は思っていました。引数が が

を同じ長さを持っている必要があります**************:私は($のadoption_date、カウントノード、ノード)tapplyに

count <- function(data){ 
return(length(data$adoption_date)) 
} 

count_tetra <- tapply(nodes,nodes$adoption_date,count) 

エラーを試してみましたループ

同じ目標を達成するためにどのようにループを使うことができるのだろうかと思います。

私はベクトルをソートすることにより起動することができます、そして、

nodes_sorted <- nodes[order(nodes$adoption_date),] 

ループのために書くが、どのように...?

目標はベクトルカウントを取得し、countの各要素は処方数の値に対応します。

ありがとうございます!


例データ:


ノード< - data.frame( adoption_date =担当者(C(1:17、NA、INF)、時間= Cの(REP(5,17) 、20,3)) )

+0

こんにちは。あなたは詳細なレベルを提供していますが、コードスニペットをコードとしてフォーマットする必要があります。 – Spangen

答えて

1

data.tableを見ましたか?私はこれのようなものがトリックだと信じています。

require(data.table) 
# convert nodes to data.table 
setDT(nodes) 
# count occurrences for each value of adoption_rate 
nodes[, .N, by = adoption_date] 
関連する問題