您如何更改pivot_wider中变量名的顺序,使其在values_from之前具有names_from?
使用us_rent_income数据集:
df <- us_rent_income %>%
pivot_wider(names_from = NAME,
values_from = c(estimate, moe))
这会产生类似于“ estimate_Alabama”的结果,我们如何更改变量的顺序,使其成为“ Alabama_estimate”?
答案 0 :(得分:4)
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"
答案 1 :(得分:0)
可能的解决方案:
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" ...