重塑一列中值的数据

时间:2011-11-11 12:14:04

标签: r dataframe reshape melt

我的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中的值替换为测试频率。任何其他想法如何管理?谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用reshape R中的base函数的另一种解决方案

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

EDIT。我看到你已经尝试reshape并且花了太长时间。您能否提供有关实际数据的更多详细信息?