我需要从数据框中选择不同的行并将它们放入各自的数据框中。
我的数据框有7个变量:一个国家变量和6个宏观级变量,如gdp,经济增长,深度等。
我的数据框中有9个不同的国家/地区,这意味着我有9行7列。
现在我需要"选择"奥德有9个单独的行(每个国家一行),有9个不同的子数据帧,每个子帧只包含一个国家和6个宏变量的值。
我尝试了以下命令,但它不起作用:
df.country1 <- df %>%
select(variable1, variable2, variable3, variable4, variable5, variable6) %>%
filter(country=="country1")
有人可以帮我解决问题吗?谢谢!
答案 0 :(得分:2)
我们可以split
按'国家',然后select
这些'变量'来获得list
data.frame
library(dplyr)
lst <- df %>%
split(.$country) %>%
select_at(vars(starts_with("variable")))
但是,如果要根据每个“国家/地区”进行一些计算,而不是使用split
,请使用group_by(country)
最好不要在全局环境中拥有单个对象,并且所有操作都可以在list
对象本身内完成。但是,如果确实需要对象,则使用list2env
names(lst) <- paste0("df.", names(lst))
list2env(lst, envir = .GlobalEnv)
在OP的代码中,它不起作用,因为在select
步骤之后,filter
只有“可变”列而没有“国家/地区”列(假设它不是分组的数据集)。 filter
步骤应该在select