我需要在具有相同值的行中添加1,因为我需要不同的值。我怎么能在R?我尝试了下面的代码,但它没有用!!
示例:我有
name value
ADF 10
ABG 10
HFM 13
SAB 36
TCC 23
BHG 20
JKH 20
DRE 12
CFG 14
CFC 18
LKM 18
POI 47
TSE 21
BBB 9
我需要:
ADF 10
ABG 11
HFM 13
SAB 36
TCC 23
BHG 20
JKH 21
DRE 12
CFG 14
CFC 18
LKM 19
POI 47
TSE 21
BBB 9
我试过了:
i=1
df$value2<-0
for (i in nrow(df))
{
t=i+1
if (df$value[i]==df$value[t]) {df$value2[i]=df$value[t] + 1}
if (df$value[i]!=df$value[t]) {df$value2[i]=df$value[i]}
}
答案 0 :(得分:1)
dat$value[c(FALSE, dat$value[-nrow(dat)] == dat$value[-1]) ] <-
dat$value[c(FALSE, dat$value[-nrow(dat)] == dat$value[-1]) ] +1
> dat
name value
1 ADF 10
2 ABG 11
3 HFM 13
4 SAB 36
5 TCC 23
6 BHG 20
7 JKH 21
8 DRE 12
9 CFG 14
10 CFC 18
11 LKM 19
12 POI 47
13 TSE 21
14 BBB 9
这可能会更短,例如diff(x)== 0。还有一个关于如何构建可能感兴趣的增量函数的早期[r]问题。
dat$value[c(FALSE, diff(dat$value)==0) ] <-
dat$value[c(FALSE, diff(dat$value)==0 )] + 1