r - 按因子级别拆分数据帧并按这些级别命名数据帧

标签 r

我想按因子变量之一的级别拆分现有数据帧,以便拆分数据帧的名称对应于因子的级别。

df <- data.frame(cbind(X = 1:10, Y = rnorm(10)), Z = sample(LETTERS[1:3], 10, replace = TRUE))

df是原始数据帧,我想将其拆分为三个名为 A 的数据帧, BC ,使得:
A = subset(df, Z == 'A')
B = subset(df, Z == 'B')
...

有没有一种简单的方法可以一次性做到这一点?我有一个庞大的数据集,并且因子变量的级别太多。

最佳答案

在基础 R 中,您应该使用函数 split .和 split有一个 default方法和方法之一 data.frame .但是,我发现 split.data.frame随着要拆分的级别数量变得巨大,速度非常慢。那是,

# inefficient in my opinion
split(df, df$Z)

上述解决方案也将直接为您提供您要求的名称,但会在很大程度上窒息。

如果您愿意使用外部包进行交易以提高速度/效率,我建议您使用 data.table包裹:
require(data.table)
dt <- data.table(df)
oo <- dt[, list(list(.SD)), by = Z]$V1
names(oo) <- unique(dt$Z)

关于r - 按因子级别拆分数据帧并按这些级别命名数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695443/

相关文章:

r - 以概率选择特定数字

r - 使用 R 访问 ACM 数字图书馆 - 没有 API 那么怎么可能?

r - 无法通过 SSOAP 在 R 中使用 Web 服务功能

恢复列表中的拆分效果

r - 如何在R中的树状图中旋转ylab标签?

r - 将表达式对象组合成 ggplot 标签的单个文本字符串

r - 为什么 ggplot2 95%CI 和手动计算的预测 95%CI 不同?

r - 修改大 R data.frame 时内存不足

r - Shiny 的部署问题,卡在 : Uploading bundle for application: 413154

r - 如何将 NA 更改为缺失值指标?