R-如何在数据框中生成列的所有组合的差异 [英] R - How can I generate difference of all combinations of columns in a data frame

查看:52
本文介绍了R-如何在数据框中生成列的所有组合的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

示例:

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中执行此操作的任何建议?

This is a sample. In my problem I have over 100 columns
Any suggestions on how to do this in R?

推荐答案

我们可以在 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

此外, combn data.frame 作为参数,所以简单地

Also, combn takes the data.frame as argument, so simply

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-如何在数据框中生成列的所有组合的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆