基于条件的R中的行值操作

时间:2017-07-20 10:25:08

标签: r

下面显示了我的数据框。

dataframe <-
  data.frame(
    A = c(0, 13.4375, 13.625, 16.6875, 16.6875),
    B = c(0, 0, 0, 1, 1),
    c = c(3, 9, 63, 52, 98)
  )

#dataframe
    #A             B      c    
    #0            0       3  
    #13.4375      0       9  
    #13.625       0       63  
    #16.6875      +1      52  
    #16.6875      +1      98  
    #..           ..      .. 

价值一直持续到n rows 现在我只对前几行感兴趣,例如3行(它将被声明为变量w)。我想根据c中的值更改B中的值,条件是B中除0以外的任何值,我想保留的值是在c中获取w的值。否则我想将c中的数据替换为0,以获取w

中声明的行数

w == 3然后预期输出

    A             B      c    
    0             0      0  
    13.4375       0      0  
    13.625        0      0  
    16.6875      +1      52  
    16.6875      +1      98    

2 个答案:

答案 0 :(得分:1)

这是吗?

dataframe = data.frame(A = c(1,2,3,4), 
                       B = c(1,0,0,1), 
                       C = c(0,0,0,1))

w <- 3
dataframe$C[1:w] <- ifelse(dataframe$B[1:w] == 0, 0, dataframe$B[1:w])

答案 1 :(得分:0)

根据显示的例子,我们将&#39; B&#39;用&#39; C&#39;专栏取代&#39; C&#39;对于那些在&#39; B&#39;

中为0的人,值为0
df1$C <- df1$B*df1$C

但是,如果B&#39; B&#39;除了0和1之外,我们只需要替换前3个元素(如果它在&#39; B&#39;上为0)

df1$C[1:3] <- df1$B[1:3]*df1$C[1:3]

进一步使条件更复杂,

w <- 3
i1 <- (seq_len(nrow(df1)) %in%  seq_len(w)) & df1$B ==0
df1$C <- df1$C * !i1