我有一个看起来像这样的数据框
a b c d
------------------
1 1 1 0
1 1 1 200
1 1 1 300
1 1 2 0
1 1 2 600
1 2 3 0
1 2 3 100
1 2 3 200
1 3 1 0
我希望它看起来像这样。
a b c d1 d2 d3
------------------------------
1 1 1 0 200 300
1 1 2 0 600 (NA)
1 2 3 0 100 200
1 3 1 0
如果该值丢失,那么填写该字段的NA就可以了,但我应该可以说该值已丢失。例如第2行和第2行。 4。
我是R的新手,我不知道如何继续。
答案 0 :(得分:6)
首先应计算每个(a,b,c)组合的次数。我会用data.table
执行此操作:
require(data.table)
dt <- data.table(df)
dt[, time:=paste("d", 1:.N, sep="."), by=list(a, b, c)]
然后您可以使用dcast
更改为宽屏格式。
dcast.data.table(dt, a+b+c~time, value.var="d", fun=sum, fill=NA_integer_)
## a b c d.1 d.2 d.3
## 1: 1 1 1 0 200 300
## 2: 1 1 2 0 600 NA
## 3: 1 2 3 0 100 200
## 4: 1 3 1 0 NA NA