-3

我需要在具有相同值的行中添加 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]}
            }
4

1 回答 1

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
于 2013-06-06T18:58:37.287 回答