我的问题可能有两方面:对于特定情况和特定群体,我想对两组值进行归纳。
让我用数据解释一下:
df <- data.frame(id = c(rep("a",6),rep("b",6),rep("c",7)),
num = c(rep(1:6, 2),rep(1:7)),
status = c(rep("good",6),rep("bad",6),rep("bad",7)), value = c(100))
> df
id num status value
1 a 1 good 100
2 a 2 good 100
3 a 3 good 100
4 a 4 good 100
5 a 5 good 100
6 a 6 good 100
7 b 1 bad 100
8 b 2 bad 100
9 b 3 bad 100
10 b 4 bad 100
11 b 5 bad 100
12 b 6 bad 100
13 c 1 bad 100
14 c 2 bad 100
15 c 3 bad 100
16 c 4 bad 100
17 c 5 bad 100
18 c 6 bad 100
19 c 7 bad 100
>
如果状态= bad
,则将num
构建为50,并在值中插入0
。
因此id
&#39; b&#39;并且&#39; c&#39;,我产生44和43个额外的行,分别在num
中按顺序编号。这些新行的value
为0
...
非常感谢任何和所有帮助。
答案 0 :(得分:6)
您可以生成“内置”数据,然后将其叠加:
require(data.table)
DT0 <- data.table(df)
DT <- rbind(
DT0,
DT0[status=="bad",list(num=.N:49+1L,status="bad",value=0),by=id]
)[order(id,num)]
您必须先安装data.table
软件包。