1
在下面的示例數據框中,如果列v9包含'a',我正在尋找一種方法將值從第v2列開始向右移動,同時用零替換間隔。數據清理 - 在列之間移動數據
set.seed(0)
df <- matrix(sample(c("a", 1:3), 100, replace = TRUE), nrow=10)
colnames(df) <- c(paste0("v", 1:10))
df <- as_tibble(df)
df$v11 <- 0
# A tibble: 10 x 11
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 3 a 3 1 1 2 1 3 3 a 0
2 1 a 3 1 3 1 3 1 1 a 0
3 1 a a 2 2 3 1 3 2 a 0
4 2 2 2 1 3 1 1 1 1 2 0
5 3 1 a a 2 a 1 1 1 3 0
6 a 3 1 3 2 a 2 1 3 3 0
7 3 1 1 2 3 a 1 3 a 3 0
8 3 2 a 3 a 1 1 3 2 1 0
9 2 3 1 a 1 2 3 1 a 1 0
10 2 1 3 2 2 2 a 3 a 3 0
因此所得到的數據幀將是(行7,9,10移位):
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
1 3 a 3 1 1 2 1 3 3 a 0
2 1 a 3 1 3 1 3 1 1 a 0
3 1 a a 2 2 3 1 3 2 a 0
4 2 2 2 1 3 1 1 1 1 2 0
5 3 1 a a 2 a 1 1 1 3 0
6 a 3 1 3 2 a 2 1 3 3 0
7 3 0 1 1 2 3 a 1 3 a 3
8 3 2 a 3 a 1 1 3 2 1 0
9 2 0 3 1 a 1 2 3 1 a 1
10 2 0 1 3 2 2 2 a 3 a 3