【问题标题】:R: Split data frame when number of columns is a primeR:当列数为素数时拆分数据帧
【发布时间】:2015-03-12 13:37:58
【问题描述】:

我有一个data.frame,它有 131 列。我需要将它分成大约 10 到 15 个变量的组(即,按列拆分,而不是按行!)。显然,由于 131 是质数,并不是所有的新数据帧都可以等长...

我在帖子中搜索了答案

但他们似乎都假设新的数据框大小相同。

编辑 感谢下面的cmets,我会尽力澄清:

我的数据框是这样的

head(trainData)
 ID          drop_vce_Range drop_dat_Range blck_vce_Range blck_dat_Range
48550           high            low           high            low
30965            low            low           high           high
40501            low            low            med            low
41771            med            low            low            low
42138            med            low            low            low
42975           high            low            low            low

此数据框有 131 列。我想在我的globalenv 中有几个数据框,例如名称为“Training_Part_1”、“Training_Part_2”等。这些新的 data.frame 中的每一个都应包含大约 15 列旧 data.frame。

【问题讨论】:

  • as.integer(131/15)131 %% 15 其余部分。显然 131 可以是length()。可以添加循环以通过 10 到 15 并最大化余数以使数据帧尽可能相等...
  • 你能提供一个可重现的小例子吗?你的预期结果是什么?包含多个 data.frames 的列表?您的全球环境中有多个 data.frames?

标签: r split dataframe primes


【解决方案1】:

这将创建一个数据框列表,该列表通过将内置数据框anscombe 的 8 列切割成 3 个不等集而形成:

k <- 3
nc <- ncol(anscombe)
lapply(split(as.list(anscombe), cut(1:nc, k, labels = FALSE)), as.data.frame)

【讨论】:

  • 这很好用。通过使用list2env(x=by_Twenty, envir=.GlobalEnv )),我还能够将列表中的部分放入我的globalenv。你能给我一个关于如何重命名输出数据帧的简短提示吗?我想我需要对labels做点什么?
  • 通常最好将它们保存在列表中,而不是将它们直接放入全局环境中。如果要添加名称,则如果 Llapply 的结果,则例如:names(L) &lt;- paste0("DF", seq_along(L))
  • 这正是我所需要的!而且,我会记得不要把它们放在全球环境中。这是我必须阅读的内容。
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2022-01-07
  • 2020-06-22
  • 1970-01-01
相关资源
最近更新 更多