spread () создает значения NA. (программирование R) - PullRequest
0 голосов
/ 02 апреля 2020

Я загружаю данные из census.gov, используя данные библиотеки Tidycensus R. Затем я преобразовываю данные с помощью распространения (). Каждый геоид имеет много столбцов с оценочным значением, но для остальных столбцов он создает NA.

фактические данные

данные после применения функции разброса

Пожалуйста, помогите мне исправить данные.

Вывод:

structure(list(GEOID = c(13001950100, 13001950100, 13001950100, 
13001950100, 13001950100, 13001950100), NAME = c("Census Tract 9501, Appling County, Georgia", 
"Census Tract 9501, Appling County, Georgia", "Census Tract 9501, Appling County, Georgia", 
"Census Tract 9501, Appling County, Georgia", "Census Tract 9501, Appling County, Georgia", 
"Census Tract 9501, Appling County, Georgia"), variable = c("S2401_C01_001", 
"S2401_C01_002", "S2401_C01_003", "S2401_C01_004", "S2401_C01_005", 
"S2401_C01_006"), estimate = c(1406, 271, 54, 54, 0, 0), moe = c(214, 
87, 43, 43, 13, 13)), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Опция с dcast

library(data.table)
dcast(setDT(df), GEOID + NAME ~ variable, value.var = c("estimate", "moe"))
0 голосов
/ 02 апреля 2020

Если вы хотите, чтобы каждый идентификатор был в одной строке:

library(tidyverse)     
df <- df %>%
     pivot_wider(names_from = variable, values_from = c("estimate", "moe"))
...