Выберите строки из фрейма данных - PullRequest
0 голосов
/ 04 июня 2018

Мне нужно выбрать разные строки из фрейма данных и поместить их в отдельный фрейм данных.

В моем фрейме данных есть 7 переменных: переменная страны и 6 переменных макроуровня, таких как ВВП, экономический рост, глубина и т. д.

У меня есть 9 разных стран в моем фрейме данных, что означает, что у меня 9 строк и 7 столбцов.

Теперь мне нужно «выбрать» 9 отдельных строк (одна строка дляв каждой стране), чтобы иметь 9 различных фреймов субданных, каждый из которых состоит только из одной страны и значений ее 6 макропеременных.

Я попробовал следующую команду, но она не сработала:

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

Может кто-нибудь помочь мне с правильной командой для моей проблемы?Спасибо!

1 Ответ

0 голосов
/ 04 июня 2018

Мы можем 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...