如何找到数据框中列对的差异

时间:2015-12-09 16:45:54

标签: r

如何减去给定数据框中的每个替代列。

  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")

1 个答案:

答案 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)]