【问题标题】:Cut a data.frame into unique halves in R在 R 中将 data.frame 切割成唯一的两半
【发布时间】:2020-09-17 02:09:41
【问题描述】:

我想将下面我的data.frame 中的列(一个玩具示例)分组为 2 个大小相同的半部分。但我想获得所有可能的 unique 半(每一半 = 一个单独的data.frame)。

例如,在前半部分,我们可能有 [q1,q2,q3 vs. q4,q5,q6],在后半部分我们可能有[q1,q4,q3 vs. q2,q5,q6],在第三个可能的一半中,我们可能有 [q1,q3,q6 vs. @ 987654338@,q4,q5], ...(每 3 列变成一个新的data.frame)。

我的理解是最终输出必须存储为结果data.frames 的list。这可以在R 中实现吗?

dat <- data.frame(q1=1:5, q2=5:1, q3=2:6, q4=6:2, q5=1:5, q6 =2:6)

【问题讨论】:

  • 你为什么不在 colnames 上运行样本并根据样本创建 2 个数据帧???

标签: r dataframe combinations tidyverse combinatorics


【解决方案1】:

我们可以使用combn 来创建所有可能的列号组合,一次取 3 个。使用组合对数据框进行子集化。

combn(seq_along(dat), ncol(dat)/2, function(x) 
         list(dat[, x], dat[, -x]), simplify = FALSE)

每个列表的长度为 2,具有相等的一半数据帧。

【讨论】:

  • 谢谢!我想rowsum 每个data.frame 然后cor 结果,可以在你的输出上这样做吗?让我作为一个不同的问题问这个问题。
  • 喜欢这个? combn(seq_along(dat), ncol(dat)/2, function(x) cor(rowSums(dat[, x]), rowSums(dat[, -x])))
  • Ronak 你能查一下this吗?
猜你喜欢
  • 2022-06-10
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多