gpt4 book ai didi

r - R-如何在数据框中生成列的所有组合的差异

转载 作者:行者123 更新时间:2023-12-02 06:51:48 26 4
gpt4 key购买 nike

例:

df <- data.frame(A=1:5, B=seq(0,10,2), C=seq(0,15,3))  
df
A B C
1 2 3
2 4 6
3 6 9
4 8 12
5 10 15

我想要的是:
A B C (A-B) (A-C) (B-C)  
1 2 3 -1 -2 -1
2 4 6 -2 -4 -2
3 6 9 -3 -6 -3
4 8 12 -4 -8 -4
5 10 15 -5 -10 -5

这是一个示例。在我的问题中,我有超过100列
关于如何在R中执行此操作的任何建议?

最佳答案

我们可以在FUN中使用combn参数

combn(seq_along(df), 2, FUN = function(x) df[,x[1]]- df[,x[2]])
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] -1 -2 0 -2 -1 1 -1 2 0 -2
#[2,] -2 -4 -4 -7 -2 -2 -5 0 -3 -3
#[3,] -3 -6 -8 -12 -3 -5 -9 -2 -6 -4
#[4,] -4 -8 -12 -17 -4 -8 -13 -4 -9 -5
#[5,] -5 -10 -16 -22 -5 -11 -17 -6 -12 -6

另外, combndata.frame作为参数,所以简单
combn(df, 2, FUN = function(x) x[,1]-x[,2])
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] -1 -2 0 -2 -1 1 -1 2 0 -2
#[2,] -2 -4 -4 -7 -2 -2 -5 0 -3 -3
#[3,] -3 -6 -8 -12 -3 -5 -9 -2 -6 -4
#[4,] -4 -8 -12 -17 -4 -8 -13 -4 -9 -5
#[5,] -5 -10 -16 -22 -5 -11 -17 -6 -12 -6

数据
df <- data.frame(A=1:5, B=seq(2,10,2), C=seq(3,15,3), d=seq(1,25,5), e=seq(3,31,6))

关于r - R-如何在数据框中生成列的所有组合的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com