如何减去给定数据框中的每个替代列。
df <- read.table(header = TRUE, text="A B C D E F
4 2 6 1 12 5
7 3 6 1 13 4
9 1 12 4 17 8")
预期产出
df1 <- read.table(header = TRUE, text="A B C
2 5 7
4 5 9
8 8 9")
答案 0 :(得分:5)
矩阵是一种更好的数据结构:
m <- as.matrix(df)
m[, 2 * (1:3) - 1] - m[, 2 * (1:3)]
# A C E
#[1,] 2 5 7
#[2,] 4 5 9
#[3,] 8 8 9
可替换地:
ind <- seq_len(ncol(m))
m[, ind %% 2L == 1L] - m[, ind %% 2L == 0L]
使用矢量回收更容易:
m[, c(TRUE, FALSE)] - m[, c(FALSE, TRUE)]