我试图获得两个变量的水平的每个组合的计数,"周"和"id".我希望结果将"id"作为行,将"week"作为列,将计数作为值.
到目前为止我尝试过的例子(尝试过其他一些东西,包括添加一个虚拟变量= 1然后再加fun.aggregate = sum上它):
library(plyr)
ddply(data, .(id), dcast, id ~ week, value_var = "id",
fun.aggregate = length, fill = 0, .parallel = TRUE)
Run Code Online (Sandbox Code Playgroud)
但是,我必须做错事,因为这个功能没有完成.有一个更好的方法吗?
输入:
id week
1 1
1 2
1 3
1 1
2 3
Run Code Online (Sandbox Code Playgroud)
输出:
1 2 3
1 2 1 1
2 0 0 1
Run Code Online (Sandbox Code Playgroud) 我的data.frame看起来像这样
ID | test | test_result
1 | B | 10
2 | A | 9
3 | A | 11
4 | C | 7
5 | F | 5
Run Code Online (Sandbox Code Playgroud)
我希望得到这样的东西:
test | test_reult_ID1 | test_result_ID2 | test_result_ID3 ...
A | NA | 9 | 11
B | 10 | NA | NA
Run Code Online (Sandbox Code Playgroud)
它使用reshape()到宽格式,只有少数情况,但整个数据框(大约23.000 ID)reshape()需要太长时间.Melt()和cast()会对数据进行重新整形,但会将test_result中的值替换为测试频率.任何其他想法如何管理?谢谢!