我有一个看起来像这样的数据框
> initial
Name Status
1 a Win
2 b Win
3 c Loss
从这里我想要一个看起来像这样的数据框
> final
Name Win Loss
1 a 1 0
2 b 1 0
3 c 0 1
我怎样才能实现这个目标
答案 0 :(得分:1)
如何使用基本功能表?
initial=data.frame(name=c("a","b","c"),
status=c("win","loss","win"))
name status
1 a win
2 b loss
3 c win
table(initial)
name loss win
a 0 1
b 1 0
c 0 1
函数table
返回一个表对象。要将其转换为您喜欢的data.frame
类型,使用命令as.data.frame
将无济于事,因为它会调度函数as.data.frame.table
。相反,您应该将表格传递给as.data.frame.matrix
final_data_frame= as.data.frame.matrix(table(initial))
答案 1 :(得分:0)
使用model.matrix()
创建列:
model.matrix(Name ~ -1 + Status, data = initial)
StatusLoss StatusWin
1 0 1
2 0 1
3 1 0
答案 2 :(得分:0)
我们可以使用dcast
library(reshape2)
dcast(initial, Name~Status, value.var='Status', length)
# Name Loss Win
#1 a 0 1
#2 b 0 1
#3 c 1 0