r - 在R中将数据框拆分为一定数量的组
问题描述
我有一个包含 285000 条记录的数据框,我想将其拆分为 10 个数据框,以便我可以轻松保存和访问。我正在尝试像这样拆分它,但我不确定如何分别保存所有数据帧:
groups <- c("x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10")
X <- split(data5, f = groups)
像这样我只收到一个子集数据帧。
解决方案
split
如果您想data
单独保存它,我建议您使用以下方法tidyverse
。
拆分数据
# libraries;
library(tidyverse)
library(data.table)
# split data according to some
# variable and store
data_list <- mtcars %>% split(
f = .$cyl
) %>% set_names(
nm = paste("cylinder", names(.), sep = "")
)
在这里,f = .$cyl
指的是您感兴趣的数据集中的分组变量。cyl
在此示例中,我根据in拆分数据mtcars
。
该函数根据data
. 在这种情况下,有 4、6 和 8 个气缸。
我继续set_names
frompurrr
以相应地命名列表中的每个元素。
保存数据
# store and save locally
# by using map
map(
.x = 1:length(data_list),
.f = function(i) {
# set name of data to save locally
path <- paste(names(data_list[i]), ".csv", sep = "")
# save with fwrite
fwrite(
data_list[[i]],
file = path,
sep = ";"
)
}
)
我使用map
遍历split
创建的列表的整个长度,并根据我们上面设置的名称将它们保存在本地,以fwrite
获得data.table
更好的性能。
请注意,在脚本中,每个数据都保存为,paste(names(data_list[i]), ".csv", sep = "")
计算结果为cylinder4.csv
和。cylinder6.csv
cylinder8.csv
对您的数据使用相同的方法,只需对脚本进行细微更改即可。
最好的
推荐阅读
- spring-boot - Spring-Data-Jpa OneToMany 查询信息日志中的重复 ID?
- android - Flutter 中的 ListView 居中
- android - 减少videoview中视频的初始加载时间
- android - 无法在 MacOS 上运行 React Native 的 Android 项目
- xml - XML 编码声明的意义何在?
- zapier - Zapier 更新时触发
- django - Django password_reset 表单电子邮件验证
- c++ - 如何使用 google protobuf 在 C++ 中将 caffe 网络写入 prototxt
- java - 3D - 使用四元数围绕矢量旋转点
- android - 导航拱组件和碎片娱乐