我几天前问了同样的问题(点击这里),但没有提到使用 data.table
得出结果会更好。
"聚合解决方案"可以正常工作,但速度较慢!我正在寻找一种更快的解决方法。
我想要重塑以下数据框:
df <- data.frame(x=c("p1","p1","p2"),y=c("a","b","a"),z=c(14,14,16))
df
x y z
1 p1 a 14
2 p1 b 14
3 p2 a 16
以便它看起来像这个样子:
df2 <- data.frame(x=c("p1","p2"),a=c(1,1),b=c(1,0),z=c(14,16))
x a b z
1 p1 1 1 14
2 p2 1 0 16
在数据框 df 中,变量 y 的元素应该被拆分成新的变量,并且每个变量都应该进行虚拟编码。所有其他变量(在这种情况下只有 z)对于每个人(p1、p2等)都是相同的。唯一一个变量,在其中特定的人 p 有不同值的是变量 y。
我希望这样做的原因是需要通过变量 x 将此数据集与其他数据集合并。事实上,它需要每个人(p1、p2等)一行。