Больше переменных в одном фрейме данных, чем в другом фрейме данных - Использование R - PullRequest
0 голосов
/ 05 марта 2020

Я использую демографию NHANES c данные за 2011-2016 гг. Мне удалось загрузить все 3 набора данных, однако я не могу объединить все три из-за того, что NHANES 2011-2012 имеет 48 переменных, в то время как остальные 2 имеют 47. Проблема в том, что я пытался не включать его, но я нужно, чтобы количество людей старше 18 в этом вопросе было включено в мои данные. Как еще можно объединить, если количество переменных не совпадает? Пробовал R-bind, c -bind, слияние и разные вещи. Я просто не могу понять, что я делаю неправильно.

****

           See code below:
           library(haven)
           nhanes = read_xpt('https://wwwn.cdc.gov/Nchs/Nhanes/2011-2012/DEMO_G.XPT')                
           nhanes2 = read_xpt('https://wwwn.cdc.gov/Nchs/Nhanes/2013-2014/DEMO_H.XPT') 
           nhanes3 = read_xpt('https://wwwn.cdc.gov/Nchs/Nhanes/2015-2016/DEMO_I.XPT')

           totalnhanes <- rbind(nhanes,nhanes2,nhanes3)

Ответы [ 3 ]

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

Вы можете просто bind_rows, и любой отсутствующий столбец (соответствующий имени столбца) будет заполнен символом NA.

library(dplyr)

df<-bind_rows(nhanes,nhanes2,nhanes3)
1 голос
/ 05 марта 2020

Добавьте отсутствующие переменные и установите все значения в NA:

setdiff(names(nhanes), names(nhanes2))
#[1] "RIDEXAGY"

nhanes2$RIDEXAGY <- NA

setdiff(names(nhanes), names(nhanes3))
#[1] "RIDEXAGY"

nhanes3$RIDEXAGY <- NA

totalnhanes <- rbind(nhanes,nhanes2,nhanes3) # Works. :)
0 голосов
/ 05 марта 2020

Rbindlist из data.table может служить цели.

library(haven)
library(data.table)
nhanes = read_xpt('https://wwwn.cdc.gov/Nchs/Nhanes/2011-2012/DEMO_G.XPT')                
nhanes2 = read_xpt('https://wwwn.cdc.gov/Nchs/Nhanes/2013-2014/DEMO_H.XPT') 
nhanes3 = read_xpt('https://wwwn.cdc.gov/Nchs/Nhanes/2015-2016/DEMO_I.XPT')

l <- list(nhanes,nhanes2,nhanes3)
totalnhanes <- rbindlist(l, fill = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...