Как добавить данные из другого DF в другой фрейм данных (r) - PullRequest
0 голосов
/ 26 марта 2020

У меня есть 2 фрейма данных, один с 1093 наблюдениями, содержащими данные из каждого состояния за промежуток времени, равный n дням, а другой фрейм данных содержит 50 наблюдений по 2 переменным: названию состояния и совокупности состояний. Моя конечная цель - создать процентную переменную населения штата во фрейме данных с 1093 наблюдениями. Поэтому я планировал добавить совокупности состояний в фрейм данных с 1093 наблюдениями, просто сопоставив названия штатов. Я попробовал этот фрагмент кода:

df.state$population <- c(which(pop.states$State==df.state$state, pop.states$X2018.Population))

Однако это не сработало, потому что есть разница в длине, поэтому мой вопрос, как я могу добавить переменную совокупности в этот набор данных или есть другой способ найти меру на душу населения переменных, найденных во фрейме данных с 1093 наблюдениями? Спасибо

Ответы [ 2 ]

1 голос
/ 26 марта 2020

То, что вы хотите сделать, называется «левым соединением». Попробуйте это:

library(tidyverse)

df <- df.state %>% left_join(pop.states, by = c("State" = "state"))

Для получения дополнительной информации и учебных пособий по подобным подходам проверьте R для науки о данных .

0 голосов
/ 26 марта 2020

Для базового способа R вы можете использовать merge, для левого соединения, такого как ответ Тима, вы используете дополнительный аргумент all.x = TRUE

df.state <- data.frame(
  state = c("New York", "Maine"),
  observations = c(1, 2)
)

pop.states <- data.frame(
  State = c("New York", "Maine"),
  X2018.Population = c(100, 200)
)

merge(df.state, pop.states, by.x = "state", by.y = "State")
#>      state observations X2018.Population
#> 1    Maine            2              200
#> 2 New York            1              100
...