如何为特定条件估算值?

时间:2015-05-07 18:31:48

标签: r

我的问题可能有两方面:对于特定情况和特定群体,我想对两组值进行归纳。

让我用数据解释一下:

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中按顺序编号。这些新行的value0 ...

非常感谢任何和所有帮助。

1 个答案:

答案 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软件包。