r - 从数据框中的奇数列中减去偶数列

标签 r dataframe

我有一个数据框(实际上我有 170 列(85 对)和约 8000 行)

data <- data.frame(A = c(6,5,4,3), B = c(2,2,2,2), C = c(9,8,7,6), D = c(2,2,2,2))

我想从第 1 列中减去第 2 列,从第 3 列中减去第 4 列,等等。

我认为我需要尝试编写一个函数或以某种方式使用 apply。

最佳答案

R 具有矢量化操作,可以在单个调用中处理此类任务:

data[c(1,3)] - data[c(2,4)]
## or for every column until the end of the dataset
data[seq(1,ncol(data),2)] - data[seq(2,ncol(data),2)]
#  A C
#1 4 7
#2 3 6
#3 2 5
#4 1 4

请参阅之前的讨论以获得许多有用的建议 - Selecting multiple odd or even columns/rows for dataframe

您可以扩展它以便自动完成命名:

s <- seq(1,ncol(data),2)
data[paste0(names(data[s]), "minus", names(data)[-s])] <- data[s] - data[-s]
data

#  A B C D AminusB CminusD
#1 6 2 9 2       4       7
#2 5 2 8 2       3       6
#3 4 2 7 2       2       5
#4 3 2 6 2       1       4

关于r - 从数据框中的奇数列中减去偶数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53180451/

相关文章:

r - ggplot增加边界线粗细

R:数据框或列表列表中的部分(或完全)匹配

python - Pandas - 汇总行以填充缺失数据

r - 使具有重复值的列在数据框中唯一

r - 在 R 中,矩阵的行或列的匹配函数

r - 如何最小化 R 包的安装大小

python - 通过将 x 添加到前一行 pandas 来填充 na 值

python - 提取数据框行中的元素

python-3.x - 如何在 Python 中的多索引列中连接满足特定条件的 Pandas 数据框

r - R 中的数据帧行必须是唯一的?