我有以下数据
device usage
a 10
a 20
b 30
b 14
c 90
c 80
c 66
如何将其转换为下方?
device V1 V2 V3
a 10 20
b 30 14
c 90 80 66
我使用ddply(ds,~device,paste)将其转换为
a,c(10,20)
b,c(30,14)
c,c(90,80,66)
如何将矢量拆分为列。或者欢迎其他方法
答案 0 :(得分:2)
您可以添加新列并将其用于reshape
。调用原始数据框x
:
> x$V <- ave(as.numeric(x$device), x$device, FUN=seq_along)
> reshape(x, direction="wide", timevar='V', idvar='device')
device usage.1 usage.2 usage.3
1 a 10 20 NA
3 b 30 14 NA
5 c 90 80 66
添加的列V
计算每个唯一设备的出现次数,这些设备在数据框中不需要是连续的。这用于重塑timevar
。