1
以下のデータフレーム例では、列v2に「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