R:将数据帧按组和行迭代拆分为列表

斯莱格罗格

我有一个这样的数据框:

set.seed(34)
startingframe <-  data.frame(
  group1=factor(rep(c("a","b"),each=3,times=1)),
  time=rep(1:3,each=1,times=2),
  othercolumn=rnorm(1:6)
)

...我试图将其操纵成一个列表,该列表按组和列的每个“迭代”划分time,结果如下所示:

 $a1
  group1 time othercolumn
1      a    1    -0.13889

$a2
  group1 time othercolumn
1      a    1   -0.138890
2      a    2    1.199813

$a3
  group1 time othercolumn
1      a    1  -0.1388900
2      a    2   1.1998129
3      a    3  -0.7477224

$b1
  group1 time othercolumn
4      b    1  -0.5752482

$b2
  group1 time othercolumn
4      b    1  -0.5752482
5      b    2  -0.2635815

$b3
  group1 time othercolumn
4      b    1  -0.5752482
5      b    2  -0.2635815
6      b    3  -0.4554921

我想我只需要将迭代位合并到此代码中:

split_list <- split(startingframe,list(startingframe$group1,startingframe$time))

编辑:我可能已经简化了原始问题,但是实际数据集还有其他一些列需要通过列表进行传递。

冰激凌巨嘴鸟

您可以head为序列中的每个数字,数据的1:nrow(x)每个子组x使用

out <- lapply(split(df, df$group1), function(x) lapply(1:nrow(x), head, x = x))
out <- unlist(out, recursive = F)

out
# $`a1`
#    group1 time
# 1:      a    1
# 
# $a2
#    group1 time
# 1:      a    1
# 2:      a    2
# 
# $a3
#    group1 time
# 1:      a    1
# 2:      a    2
# 3:      a    3
# 
# $b1
#    group1 time
# 1:      b    1
# 
# $b2
#    group1 time
# 1:      b    1
# 2:      b    2
# 
# $b3
#    group1 time
# 1:      b    1
# 2:      b    2
# 3:      b    3

但是,您可能不需要创建所有这些数据框的列表,而可以只创建索引列表并根据需要使用它们。

inds <- 
  lapply(split(seq(nrow(df)), df$group1), function(x) 
    lapply(1:length(x), function(y) x[seq(y)]))

inds
# $`a`
# $`a`[[1]]
# [1] 1
# 
# $`a`[[2]]
# [1] 1 2
# 
# $`a`[[3]]
# [1] 1 2 3
# 
# 
# $b
# $b[[1]]
# [1] 4
# 
# $b[[2]]
# [1] 4 5
# 
# $b[[3]]
# [1] 4 5 6

df[inds$b[[2]]]
#    group1 time
# 1:      b    1
# 2:      b    2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按行号将数据帧拆分为数据帧列表

r通过迭代数字过滤器将数据帧拆分为列表

在R中以定义的顺序将基于组的数据帧拆分为列表

将数据帧拆分为 R 中的列子集列表

R-将大型数据帧并行拆分为列表

按列将 R 数据帧拆分为许多新的数据帧

R将数组拆分为数据帧

按日期将数据帧拆分为多个帧 Python

将数据集拆分为嵌套的数据帧列表,然后使用 Tidyr 和 Purrr 进行传播

R:按行拆分连接的数据帧

如何在R中按行对数据帧进行排序,然后将其拆分为多个数据帧?

如何将数据帧拆分为等长列表

将列表列拆分为R数据帧上的多个整数列

将数据帧拆分为多个,并重叠行

将基于模式的数据帧行拆分为新列

如何将Spark数据帧行拆分为列?

R:如何根据单元格中的值将数据帧中的行拆分为多行?

如何根据组将 pyspark 数据帧拆分为 2 个数据帧

按 R 中的值组拆分数据帧

是否有将大数据帧拆分为大小相等的n个较小数据帧(按行)并具有n + 1个较小大小的数据帧的功能?

在R数据帧中将行值拆分为多行

根据列中的公共值将大数据帧拆分为数据帧列表

如果满足条件,如何将数据帧行拆分为多个数据帧行?

使用熊猫如何将一个数据帧按行拆分为多个大小为N的数据帧

如何通过行索引将数据帧拆分为子数据帧

根据行是否包含字符串将数据帧拆分为多个数据帧

如何根据行序列将数据帧拆分为多个数据帧

按组将data.frame拆分为向量列表而不是data.frames列表

R函数根据索引将数据帧拆分为多个数据帧