Порядок имен переменных pivot_wider - PullRequest
1 голос
/ 01 октября 2019

Как вы можете изменить порядок имен переменных в pivot_wider, чтобы он имел names_from перед значениями_с? Как мы можем изменить порядок переменной, чтобы она была «Alabama_estimate»?

Ответы [ 2 ]

3 голосов
/ 01 октября 2019

Документация для pivot_wider() гласит: «Если values_from содержит несколько значений, это значение будет добавлено в начало столбца вывода», так что, похоже, нет способа контролировать это как часть изменения формы,Вместо этого это должно быть сделано впоследствии.

Предполагая, что в наборе данных нет других имен переменных, содержащих _ (если это так, разделитель может быть изменен на что-то уникальное, используя аргумент names_sep),один подход будет:

library(tidyr)

df <- us_rent_income %>% 
  pivot_wider(names_from = NAME,
              values_from = c(estimate, moe)) %>%
  setNames(nm = sub("(.*)_(.*)", "\\2_\\1", names(.)))

head(names(df))

[1] "GEOID"  "variable"  "Alabama_estimate"  "Alaska_estimate"  "Arizona_estimate"  "Arkansas_estimate"
0 голосов
/ 01 октября 2019

Возможное решение:

df <- us_rent_income %>% 
  pivot_wider(names_from = NAME,
              values_from = c(estimate, moe))

names(df) <- sapply(strsplit(names(df), "_"), 
                    function(x) if(length(x)>1) paste0(x[2],"_",x[1]) else x)

names(df)
# [1] "GEOID" "variable" "Alabama_estimate" "Alaska_estimate" 
#     "Arizona_estimate" "Arkansas_estimate" "California_estimate" ...
...