我有一个看起来像这样的数据框
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
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样.
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
Run Code Online (Sandbox Code Playgroud)
如果该值丢失,则填写该字段的NA很好,但我应该可以说该值已丢失.例如第2和第4行.
我是R的新手,我不知道如何继续.
您应该首先计算每个(a,b,c)组合存在的次数.我会这样做data.table:
require(data.table)
dt <- data.table(df)
dt[, time:=paste("d", 1:.N, sep="."), by=list(a, b, c)]
Run Code Online (Sandbox Code Playgroud)
然后您可以使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |