gpt4 book ai didi

r - 如何在 pivot_wider 中指定特定的列顺序

转载 作者:行者123 更新时间:2023-12-05 00:46:27 24 4
gpt4 key购买 nike

Dataframe indrur 由变量 S447.1 组成,表示运输方式。我使用 dplyr 按变量分组并将其转换为宽格式。

library(dplyr)      
indrurmodes<-indrur %>%
group_by(V024,V025,V190) %>%count(S447.1) %>%
pivot_wider(names_from = S447.1,values_from = n, values_fill = list(n = 0))

它给了我以下输出。但我希望列按特定顺序 - GovtAmb,OthAmb,Jeep,Tempo,Scooter,Bus,Cart,Foot,NA。我必须为多个过滤的数据帧执行上述代码。每次,我都会得到不同的订单。这使得在我使用列索引作为引用的情况下执行进一步的算术运算变得困难。如何维护所需的列顺序?

       V024     V025    V190 GovtAmb Jeep   Tempo Foot  NA     OthAmb Scooter  Bus  Cart
3 Andaman Rural Middle 67 21 16 16 615 2 3 4 0
4 Andaman Rural Richer 66 39 20 3 617 2 1 0 0
5 Andaman Rural Richest 21 18 5 2 278 0 2 5 1
6 Andhra Rural Poorest 25 0 35 4 294 5 0 6 0

最佳答案

你有两个选择。

library(dplyr)
library(tidyr)

#Order of the columns you want
vec <- c("GovtAmb","OthAmb","Jeep","Tempo","Scooter","Bus","Cart","Foot",NA)

1) 使用 pivot_wider :

pivot_wider 按出现的顺序返回列。因此,您可以在使用 pivot_wider 之前按照您想要的顺序 arrange 数据。

indrur %>% 
group_by(V024,V025,V190) %>%
count(S447.1) %>%
arrange(match(S447.1, vec)) %>%
pivot_wider(names_from = S447.1,values_from = n, values_fill = list(n = 0))

2) 使用旧的 spread,它根据因子水平给出列顺序。

indrur %>% 
group_by(V024,V025,V190) %>%
count(S447.1) %>%
mutate(S447.1 = factor(S447.1, levels = vec)) %>%
spread(S447.1,n,fill = 0)

关于r - 如何在 pivot_wider 中指定特定的列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60462780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com