R 根据总行数的比例提取数据帧的子集

R 根据总行数的比例提取数据帧的子集,r,dataframe,subset,R,Dataframe,Subset,我想将一个数据帧子集为若干相等的子集,这些子集基于数据帧中总行数的比例。给定一个包含30行的数据帧(参见下面的简单示例数据),我希望最后得到10个子集的数据,每三行长。第一个子集将包含行1:3(行的前10%),第二个子集将包含行4:6(10%–20%),依此类推,直到100% 示例数据: > dput(df) structure(list(datetime = c("05/04/2012 14:56", "05/04/2012 14:57", "05/04/2012 14:58", "0

我想将一个数据帧子集为若干相等的子集,这些子集基于数据帧中总行数的比例。给定一个包含30行的数据帧(参见下面的简单示例数据),我希望最后得到10个子集的数据,每三行长。第一个子集将包含行1:3(行的前10%),第二个子集将包含行4:6(10%–20%),依此类推,直到100%

示例数据:

> dput(df)
structure(list(datetime = c("05/04/2012 14:56", "05/04/2012 14:57", 
"05/04/2012 14:58", "05/04/2012 14:59", "05/04/2012 15:00", "05/04/2012 15:01", 
"05/04/2012 15:02", "05/04/2012 15:03", "05/04/2012 15:04", "05/04/2012 15:05", 
"05/04/2012 15:06", "05/04/2012 15:07", "05/04/2012 15:08", "05/04/2012 15:09", 
"05/04/2012 15:10", "05/04/2012 15:11", "05/04/2012 15:12", "05/04/2012 15:13", 
"05/04/2012 15:14", "05/04/2012 15:15", "05/04/2012 15:16", "05/04/2012 15:17", 
"05/04/2012 15:18", "05/04/2012 15:19", "05/04/2012 15:20", "05/04/2012 15:21", 
"05/04/2012 15:22", "05/04/2012 15:23", "05/04/2012 15:24", "05/04/2012 15:25"
), count = c(23L, 56L, 45L, 33L, 34L, 33L, 19L, 28L, 24L, 17L, 
26L, 28L, 34L, 38L, 19L, 26L, 25L, 24L, 24L, 22L, 20L, 27L, 25L, 
18L, 37L, 32L, 28L, 26L, 25L, 23L), behav = c(1L, 1L, 2L, 2L, 
2L, 3L, 1L, 2L, 2L, 1L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 
1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 3L), btime = c(473.1, 473.1, 
473.1, 473.1, 473.1, 473.1, 72.9, 72.9, 72.9, 72.9, 72.9, 72.9, 
72.9, 72.9, 72.9, 72.9, 543, 543, 543, 543, 543, 543, 543, 543, 
543, 543, 600, 600, 600, 600)), .Names = c("datetime", "count", 
"behav", "btime"), class = "data.frame", row.names = c(NA, -30L
))
我可以使用类似于
obj1=df[1:3,]
,,
obj2=df[4:6,]
等等……但是我正在处理大数据帧,所以我想找到一种自动化的方法来完成这项工作。我已经使用下面的代码成功地提取了前10%的行(尽管我确信有更好的方法),但是我很难继续提取后续的子集

obj1 = head(df[order(df$datetime),],0.1*nrow(df))
最后,我想提出以下几点:

> obj1
          datetime     time count behav btime
1 05/04/2012 14:56 14:56:00    23     1 473.1
2 05/04/2012 14:57 14:57:00    56     1 473.1
3 05/04/2012 14:58 14:58:00    45     2 473.1

> obj2
          datetime     time count behav btime
4 05/04/2012 14:59 14:59:00    33     2 473.1
5 05/04/2012 15:00 15:00:00    34     2 473.1
6 05/04/2012 15:01 15:01:00    33     3 473.1

etc…to obj10

任何建议都将不胜感激

使用
cut
创建分组变量
grp
,然后在该变量上拆分
df
。这给出了一个列表,
obj
,这样
obj[[1]]
就是第一组,以此类推

grp <- cut(1:nrow(df), 10, labels = FALSE)
obj <- split(df, grp)

grp使用
cut
创建分组变量
grp
,然后在该变量上拆分
df
。这给出了一个列表,
obj
,这样
obj[[1]]
就是第一组,以此类推

grp <- cut(1:nrow(df), 10, labels = FALSE)
obj <- split(df, grp)

grp使用
cut
创建分组变量
grp
,然后在该变量上拆分
df
。这给出了一个列表,
obj
,这样
obj[[1]]
就是第一组,以此类推

grp <- cut(1:nrow(df), 10, labels = FALSE)
obj <- split(df, grp)

grp使用
cut
创建分组变量
grp
,然后在该变量上拆分
df
。这给出了一个列表,
obj
,这样
obj[[1]]
就是第一组,以此类推

grp <- cut(1:nrow(df), 10, labels = FALSE)
obj <- split(df, grp)

grp@G.Grothendieck:这太神奇了!这正是我想要的。非常感谢。@G.格罗森迪克:这太棒了!这正是我想要的。非常感谢。@G.格罗森迪克:这太棒了!这正是我想要的。非常感谢。@G.格罗森迪克:这太棒了!这正是我想要的。非常感谢。嗨,花点时间,在添加标签之前阅读标签摘录。是给熊猫的,而你需要在这里。下次小心点。请看这篇文章。嗨,花点时间,在标记前阅读标记摘录。是给熊猫的,而你需要在这里。下次小心点。请看这篇文章。嗨,花点时间,在标记前阅读标记摘录。是给熊猫的,而你需要在这里。下次小心点。请看这篇文章。嗨,花点时间,在标记前阅读标记摘录。是给熊猫的,而你需要在这里。下次小心点。请看这篇文章。