我的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中的值替换为测试频率。任何其他想法如何管理?谢谢!
答案 0 :(得分:6)
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
答案 1 :(得分:0)
使用reshape
R中的base
函数的另一种解决方案
reshape(mydf, direction = 'wide', idvar = 'test', timevar = 'ID',
v.names = 'test_result', sep = "_")
EDIT。我看到你已经尝试reshape
并且花了太长时间。您能否提供有关实际数据的更多详细信息?