値。非固有のIDと値の列(ユニーク可能性がありますがでなくてもかまいません)の列と、次のデータフレームを考えてみましょう:データフレームからユニークIDのカウント数を導出し、カウントのために新しい列を作成し、私はデータフレームのリシェイプ/カウント問題を抱えている
id<-c(1,1,1,2,2,3,4,4,4,4)
value_df<-c("A","B","C","D","E","F","G","H","I","J")
df<-data.frame(id,value_df)
df
id value_df
1 1 A
2 1 B
3 1 C
4 2 D
5 2 E
6 3 F
7 4 G
8 4 H
9 4 I
10 4 J
私は何を後にしていますが、最初の列のデータフレームを作成することです一意のidの、これらの第二の数と、各IDの残りのn列の値を、このような含まれています。カウントを導出plyrパッケージを使用して
df_counts_reshape
id number_id value_df_1 value_df_2 value_df_3 value_df_4
1 1 3 A B C N
2 2 2 D E <NA> <NA>
3 3 1 F <NA> <NA> <NA>
4 4 4 G I J K
すると、この
count(df,"id")
のように、簡単です
それから私の問題が始まります。私はがreshape2パッケージから dcastとを溶融しようとしたデータフレームの残りの部分を取得するには。
df_melted<-melt(df,id.vars =c("id"), measure.vars = c("value_df"))
df_cast<-dcast(df_melted,id~value)
これは、しかし、次の出力の結果は:
df_cast
id A B C D E F G H I J
1 1 A B C <NA> <NA> <NA> <NA> <NA> <NA> <NA>
2 2 <NA> <NA> <NA> D E <NA> <NA> <NA> <NA> <NA>
3 3 <NA> <NA> <NA> <NA> <NA> F <NA> <NA> <NA> <NA>
4 4 <NA> <NA> <NA> <NA> <NA> <NA> G H I J
この出力は、私が望んだものよりも、より多くの「値」の列を持っているが、私は見つけることができませんし、簡単な方法は、それを簡素化します私は上記の出力をしたい。私はnumber_idを取得する最後のステップがrbindであるとも考えていました。私の実際のデータフレームは、列の数千人と非常に不器用現在メルト/ dcast出力を行う行数千が含まれていると言うために
言うまでもないです。
df<-data.frame(id,value_df)
df$num <- ave(as.character(df$value_df), df$id, FUN = seq_along)
df = reshape(df,idvar = "id",direction = "wide",timevar = "num")
結果:この
感謝として、これらの値を使用して、私は少しの周りにプレーする必要がありますが、それは非常に良いスタートです。それは私のdf $ idは私の大規模なデータセットのために問題を複雑にしているようだvalue_df列の値depsite NAことができることが判明しました。 –