假设我有一个像
这样的数据框d <- c("03-12-2018","03-11-2018")
g <- c(10,5)
p <- c(8,9)
a <- c(7,2)
df <- data.frame(d,g,p,a)
colnames(df) <- c("date","grapes","pears","apples")
df
date grapes pears apples
1 03-12-2018 10 8 7
2 03-11-2018 5 9 2
我基本上希望输出看起来像:
date grapes_pears grapes_apples pears_apples
3-12-2018 2 3 1
3-11-2018 -4 3 7
因此,输出表中的值只是列中第一个水果和第二个水果之间的差异。标题上的基本笛卡尔积(ex日期列)很好......我知道我会反过来接受对(grape_pears,pears_grapes),只是改变了价值的标志,还有grape_grapes的情况,但现在还可以。稍后会改进。
感谢您的帮助。
答案 0 :(得分:0)
您可以尝试combn()
,即
combn(names(df[-1]),2, FUN = function(i) Reduce(`-`, df[i]))
给出,
[,1] [,2] [,3] [1,] 2 3 1 [2,] -4 3 7