r - 根据列的唯一值从一个数据框创建数据框列表
问题描述
考虑以下数据:
myd <- dput(myd)
structure(list(group = c("g1", "g1", "g1", "g1", "g1", "g2",
"g2", "g2", "g2", "g3", "g3", "g3", "g3", "g3"), X1 = c(0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0), X2 = c(1, 1, 1, 1, 1, 0,
0, 0, 0, 1, 0, 0, 2, 0), X3 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 2, 1), X4 = c(1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 2, 1),
X5 = c(1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 2, 2), X6 = c(2,
2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 2, 2), X7 = c(2, 2, 2, 2,
2, 2, 2, 2, 1, 1, 0, 2, 2, 2), X8 = c(1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 1), X9 = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1, 1, 0, 2), X10 = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 2,
1, 2), X11 = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 2, 2),
X12 = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 1, 0, 1, 2), X13 = c(2,
2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 2), X14 = c(0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1), X15 = c(0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0), X16 = c(1, 1, 0, 0, 0, 1, 1,
1, 1, 1, 0, 2, 1, 1), X17 = c(2, 2, 2, 2, 2, 1, 1, 1, 1,
1, 0, 2, 1, 1), X18 = c(2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 1,
1, 0, 1), X19 = c(2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 1,
0), X20 = c(2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 0, 0), X21 = c(1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1), X22 = c(0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 0, 2, 0, 1), X23 = c(1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 0, 1, 1), X24 = c(1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 1, 2, 1), X25 = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 2, 0), X26 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 2, 1)), row.names = c("S1", "S2", "S3", "S4", "S5", "S6",
"S7", "S8", "S9", "S10", "S11", "S12", "S13", "S14"), class = "data.frame")
我看起来像这样:
group X1 X2 X3 X4
S1 g1 0 1 1 1
S2 g1 0 1 1 1
S3 g1 0 1 1 1
S4 g1 0 1 1 0
S5 g1 0 1 1 0
我想根据其唯一值为myd$group
3 (g1,g2,g3) 创建一个数据框列表,因此列表的每个元素都将是 myd 数据框的子集,其唯一值为myd$group
. 我知道如何使用 for 循环来做到这一点,但我认为 R 中的 for 循环很慢,如果我错了,请纠正我。因此,非常欢迎使用一些 apply 系列或 dplyr 包的解决方案。
解决方案
我们可以使用split
创建一个list
of data.frame
s
lst1 <- split(myd, myd$group)
中tidyverse
,可以是
library(dplyr)
myd %>%
group_split(group)
推荐阅读
- php - 如何在 Laravel Eager Loading Array 中使用别名而不更改方法名称
- td-engine - 如何在 TDengine 数据库中删除表?
- python - 如何获取与模型中任何博客文章相关的标签列表 - Django
- r - 无法在可反应中呈现没有行数的分组单元格
- c++ - 为什么花括号围绕 C++ 中的枚举赋值?
- python - 面对总是大约。我的估计器 DNN 中的结果相同(可怕)
- html - TE2000 HMI 事件记录器 - 保存在文本文件中
- sparql - 从 Wikidata itemLabel 返回 Wikidpedia 标签的 SPARQL 查询
- camera - 如何解决函数“namedWindow”中的 cv2.error 'winname.empty()?
- laravel - 根据 id 更改类别颜色