如何更改pivot_wider 中变量名称的顺序,使names_from 位于values_from 之前?
使用 us_rent_income 数据集:
df <- us_rent_income %>%
pivot_wider(names_from = NAME,
values_from = c(estimate, moe))
Run Code Online (Sandbox Code Playgroud)
这给出了像“estimate_Alabama”这样的结果,我们如何更改变量的顺序,使其成为“Alabama_estimate”?
H 1*_*H 1 15
编辑:按照tidyr 1.1.0变量名的顺序可以用names_glue参数控制:
us_rent_income %>%
pivot_wider(
names_from = NAME,
values_from = c(estimate, moe),
names_glue = "{NAME}_{.value}"
)
Run Code Online (Sandbox Code Playgroud)
旧答案:
文档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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2125 次 |
| 最近记录: |