2

私のdata.frameは次のようになります

ID | test | test_result
1  |  B   |   10
2  |  A   |   9
3  |  A   |   11
4  |  C   |   7
5  |  F   |   5

そして、私はこのようなものを取得したい:

test | test_reult_ID1 | test_result_ID2 | test_result_ID3 ...
 A   |   NA           |     9           |   11
 B   |   10           |     NA          |   NA

reshape() を使ってワイド フォーマットに対応するケースはごくわずかですが、データ フレーム全体 (約 23.000 ID) では reshape() に時間がかかりすぎます。Melt() と cast() はデータを再形成しますが、test_result の値をテストの頻度で置き換えます。これを管理する他のアイデアはありますか?ありがとう!

4

2 に答える 2

6

reshape2パッケージのdcastはこれを行います:

require(reshape2)
dcast(data, test ~ ID , value_var = 'test_result' )

#  test  1  2  3  4  5
#1    A NA  9 11 NA NA
#2    B 10 NA NA NA NA
#3    C NA NA NA  7 NA
#4    F NA NA NA NA  5
于 2011-11-11T13:29:37.010 に答える
0

Rのreshape関数を使用した別のソリューション。base

reshape(mydf, direction = 'wide', idvar = 'test', timevar = 'ID', 
  v.names = 'test_result', sep = "_")

編集。すでにお試しいただいているようですがreshape、時間がかかりすぎました。実際のデータの詳細を教えていただけますか?

于 2011-11-11T15:32:39.637 に答える