在R中子集 Dataframe 并命名循环中的每个子集

oxcyiej7  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(180)

我尝试使用列中的唯一值列表来划分数据框的子集,并基于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"))
af7jpaap

af7jpaap1#

要为数据框设置子集并根据列中的唯一值为每个子集命名,可以在R中组合使用split()和assign()函数。下面是一个基于您提供的代码和测试数据的示例:

List <- unique(test$ID)

# Split the data frame into subsets based on unique values in ID column
subsets <- split(test, test$ID)

# Name each subset using assign()
for (i in seq_along(subsets)) {
  assign(paste0("test", i), subsets[[i]])
}

这段代码将为ID列中的每个唯一值创建单独的数据框,命名为test1、test2等。每个子集将包含与该唯一值对应的行。
您可以使用分配的名称访问每个子集。例如,test1将包含ID为“a”的子集,test2将包含ID为“b”的子集,依此类推。
请注意,通常建议避免为子集创建多个单独的数据框,而是使用数据框列表。但是,如果您特别需要每个子集的单独数据框,则上述方法可以实现这一点。

相关问题