如何为特定条件估算值?

gh0*_*r18 4 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
> 
Run Code Online (Sandbox Code Playgroud)

如果status = bad则构建num为50并将0值归入该值.

因此,对于id'b'和'c',我将产生44和43个额外的行,分别按顺序编号num.而value对于那些新行会0...

任何和所有的帮助非常感谢.

Fra*_*ank 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)]
Run Code Online (Sandbox Code Playgroud)

你必须先安装data.table包.