下面显示了我的数据框。
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
答案 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的人,值为0df1$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