如何在R语言中使用filter生成多个结果数据框?
按Country批量生成单独DataFrame的方法
当然可以不用手动重复代码,以下几种方法都能实现:
方法1:用dplyr的group_split拆分(推荐)
直接按Country分组拆分,得到一个包含各国家DataFrame的列表:
library(dplyr) # 按Country拆分,得到列表 country_dfs <- Dat %>% group_split(Country)
这个列表里的每个元素就是对应国家的DataFrame,你可以通过country_dfs[[1]]、country_dfs[[2]]来访问;如果给列表元素命名,还能更直观调用:
names(country_dfs) <- unique(Dat$Country) # 之后可直接用 country_dfs$India 访问对应DataFrame
方法2:用base R的split函数
不需要加载dplyr也能快速实现,且会直接生成以国家名为元素名的列表:
country_dfs <- split(Dat, Dat$Country) # 直接通过 country_dfs$Japan 调用日本的DataFrame
方法3:将拆分后的DataFrame直接命名到全局环境
如果想把每个国家的DataFrame单独作为全局变量(比如生成India、Japan这类直接对应国家名的对象),可以用以下代码:
# 批量赋值到全局环境 list2env(split(Dat, Dat$Country), envir = .GlobalEnv)
执行后就能直接调用India、Japan这类变量。
针对指定国家的拆分
如果只想处理Country_List里的国家,先过滤再拆分即可:
country_dfs <- Dat %>% filter(Country %in% Country_List) %>% group_split(Country)
内容的提问来源于stack exchange,提问作者Mikin
相关产品推荐
相关产品推荐

