首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代地拆分大型数据集以逐行获取较小的数据集

如何迭代地拆分大型数据集以逐行获取较小的数据集
EN

Stack Overflow用户
提问于 2020-12-04 01:04:52
回答 1查看 206关注 0票数 1

我有一个数据集,它有一个从1-182天的列。我想把这个数据集分割成更小的30天数据帧。但是,我希望数据帧形成如下:

Dataframe 1:第1天-第30天(第1-30行)

Dataframe 2:第2天-第31天(第2-31行)

Dataframe 3:第3天-第33天(第3-32行)等等。

我已经知道如何在30天前分开,但却找不到像这样分裂的方法!请告诉我如何使用R中的一些函数来完成这个任务。

EN

回答 1

Stack Overflow用户

发布于 2020-12-04 01:25:04

假设您有这样一个data.frame

代码语言:javascript
复制
set.seed(1)
d <- data.frame(matrix(sample(20, 30, TRUE), ncol = 3))
#    X1 X2 X3
# 1   6  5 19
# 2   8  4  5
# 3  12 14 14
# 4  19  8  3
# 5   5 16  6
# 6  18 10  8
# 7  19 15  1
# 8  14 20  8
# 9  13  8 18
# 10  2 16  7

..。创建标识感兴趣行的矩阵。在这里,我感兴趣的是每三行,因此1-3,2-4,3-5,.,8-10.为你的案子把"3“改为30。

代码语言:javascript
复制
m <- embed(1:nrow(d), 3)
m
#      [,1] [,2] [,3]
# [1,]    3    2    1
# [2,]    4    3    2
# [3,]    5    4    3
# [4,]    6    5    4
# [5,]    7    6    5
# [6,]    8    7    6
# [7,]    9    8    7
# [8,]   10    9    8

有了这些之后,在索引中使用lapply提取相关的行。

代码语言:javascript
复制
lapply(1:nrow(m), function(x) d[rev(m[x, ]), ])
# [[1]]
#   X1 X2 X3
# 1  6  5 19
# 2  8  4  5
# 3 12 14 14
#
# [[2]]
#   X1 X2 X3
# 2  8  4  5
# 3 12 14 14
# 4 19  8  3
# 
# [[3]]
#   X1 X2 X3
# 3 12 14 14
...
...
# [[7]]
#   X1 X2 X3
# 7 19 15  1
# 8 14 20  8
# 9 13  8 18
# 
# [[8]]
#    X1 X2 X3
# 8  14 20  8
# 9  13  8 18
# 10  2 16  7

结果是您的listdata.frame。如果您真的希望在您的工作区中将所有的子集作为单独的data.frame,您可以使用list2env

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65136489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档