Изменить данные для значений в одном столбце - PullRequest
2 голосов
/ 11 ноября 2011

Мой 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 идентификаторов) функция reshape () занимает слишком много времени.Melt () и cast () изменяют данные, но заменяют значения в test_result частотой теста.Любые другие идеи, как справиться с этим?Спасибо!

Ответы [ 2 ]

6 голосов
/ 11 ноября 2011

dcast из пакета reshape2 делает это:

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
0 голосов
/ 11 ноября 2011

Другое решение с использованием функции reshape в base R.

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

EDIT. Я вижу, что вы уже пробовали reshape, и это заняло слишком много времени. Можете ли вы предоставить более подробную информацию о ваших фактических данных?

...