我的数据框如下所示:
df <-
Date P1 P2 P3 P4
1/31 5 3 4 5
2/28 2 3 7 8
3/31 5 6 7 8
我想按日期对列P1 ... P4进行所有组合,一次取2 - 4C2。结果将是一个包含结果数据框的列表,理想情况下如下所示:
[[1]]
Date P1 P2
1/31 5 3
2/28 2 3
3/31 5 6
[[2]]
Date P1 P3
1/31 5 4
2/28 2 7
3/31 5 7
.
.
.
我正在尝试使用combn()函数来解决这个问题。我可以通过
完成组合combn(names(df),2,simplify=FALSE)
但是这给了我日期和结果中的值。我应该怎么做这个任务?
答案 0 :(得分:1)
试试这个
ind <- which(names(df)=="Date") # find the index of Date column
combn(ncol(df)-1, 2, function(a) cbind(df[ind], df[-ind][a]), simplify = F)
答案 1 :(得分:1)
使用lapply你可以做
split_vec = combn(names(df)[-1], 2)
lapply(1:ncol(split_vec), function(x) select(df, "Date", split_vec[, x]))