从数据框

时间:2018-06-04 15:44:19

标签: r dataframe rows

我需要从数据框中选择不同的行并将它们放入各自的数据框中。

我的数据框有7个变量:一个国家变量和6个宏观级变量,如gdp,经济增长,深度等。

我的数据框中有9个不同的国家/地区,这意味着我有9行7列。

现在我需要"选择"奥德有9个单独的行(每个国家一行),有9个不同的子数据帧,每个子帧只包含一个国家和6个宏变量的值。

我尝试了以下命令,但它不起作用:

df.country1 <- df %>%
  select(variable1, variable2, variable3, variable4, variable5, variable6) %>%
  filter(country=="country1")

有人可以帮我解决问题吗?谢谢!

1 个答案:

答案 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

之前