我有一个数据框(实际上我有 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/