我会重现
v1 <- c(40,45,46,45,46,43,45)
v2 <- c(41,19,44,45,23,44,42)
df <- data.frame(v1,v2)
v1 v2
40 41
45 19
46 44
45 45
46 23
43 44
45 42
我想要的结果是
if v1 - v2 > 10
然后我应该按顺序排列单元格。
v1 v2
40 41
45 NA
46 19
45 44
46 45
43 NA
45 23
NA 44
NA 42
太复杂了吗?
答案 0 :(得分:0)
我相信会有更好的方法,但这对初学者来说是好的:)
v1 <- c(40,45,46,45,46,43,45)
v2 <- c(41,19,44,45,23,44,42)
df <- data.frame(v1,v2)
update_df <- function(df){
v1 <- df$v1
v2 <- df$v2
v1 <- c(v1,NA)
v2 <- c(v2[1:i-1],NA,v2[i:length(v2)])
return(cbind.data.frame(v1,v2))
}
k <- nrow(df)
skip <- FALSE
for(i in 1:k)
{
if(df$v1[i] - df$v2[i] > 10 & skip == F)
{ df <- update_df(df)
k <- nrow(df)
skip <- TRUE
next}
skip <- FALSE
}