如何增加由R中前一行条件限制的行?

时间:2013-06-06 18:34:38

标签: r

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

1 个答案:

答案 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