我有一个R数据帧,其中包含我想要"扩展"的因子,因此对于每个因子级别,新数据帧中都有一个关联列,其中包含1/0指示符.例如,假设我有:
df.original <-data.frame(eggs = c("foo", "foo", "bar", "bar"), ham = c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)
我想要:
df.desired <- data.frame(foo = c(1,1,0,0), bar=c(0,0,1,1), ham=c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)
因为对于某些分析的,你需要有一个完全的数字数据帧(例如,主成分分析),我认为这功能可能是内置的.写一个函数来做到这一点应该不会太难,但我可以预见到一些与列名相关的挑战,如果已存在某些内容,我宁愿使用它.
我试图获得两个变量的水平的每个组合的计数,"周"和"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)