我的问题可能是双重的:我想,对于特定条件和某个特定群体,我要归咎于两组价值观.
让我用数据解释一下:
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...
任何和所有的帮助非常感谢.
您可以生成"内置"数据,然后将其堆叠:
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包.
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |