我尝试使用列中的唯一值列表来划分数据框的子集,并基于R中的唯一值来命名每个子集。
我已经能够成功地为数据框划分子集,但我不确定如何根据划分子集时使用的值来命名每个子集。我已经链接了一个测试数据集和我的数据子集代码。
我只需要弄清楚如何将每个子集命名为过程的一部分。
List <- unique(test$ID)
for (i in 1:length(List)) {
assign(paste0("test",i), subset(test, ID == List[[i]]))
}
Column | ID | Value
1 | a | 5
2 | a | 6
3 | b | 4
4 | b | 1
5 | c | 9
6 | c | 5
7 | c | 7
8 | d | 1
9 | e | 1
10 | d | 5
11 | d | 6
12 | f | 7
13 | g | 8
14 | g | 9
15 | g | 1
16 | g | 12
17 | h | 6
测试数据
structure(list(ID = c("a", "a", "b", "b", "c", "c", "c", "d",
"e", "d", "d", "f", "g", "g", "g", "g", "h"), Value = c(5, 6,
4, 1, 9, 5, 7, 1, 1, 5, 6, 7, 8, 9, 1, 12, 6)), row.names = c(NA,
-17L), spec = structure(list(cols = list(ID = structure(list(), class = c("collector_character",
"collector")), Value = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), delim = ","), class = "col_spec"), problems = <pointer: 0x000001b7992ef930>, class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"))
1条答案
按热度按时间af7jpaap1#
要为数据框设置子集并根据列中的唯一值为每个子集命名,可以在R中组合使用split()和assign()函数。下面是一个基于您提供的代码和测试数据的示例:
这段代码将为ID列中的每个唯一值创建单独的数据框,命名为test1、test2等。每个子集将包含与该唯一值对应的行。
您可以使用分配的名称访问每个子集。例如,test1将包含ID为“a”的子集,test2将包含ID为“b”的子集,依此类推。
请注意,通常建议避免为子集创建多个单独的数据框,而是使用数据框列表。但是,如果您特别需要每个子集的单独数据框,则上述方法可以实现这一点。