r - Group_by 和 summarise_each 改变了索引列的原始顺序
问题描述
我正在尝试根据包含经济部门的第一列对数据集进行分组和求和。问题是当我这样做时,第一列条目的原始顺序变为字母顺序。我需要保留此订单以供以后分析。这是我的代码:
df <- inner_join(df2, df3, by= "sector")
df <- df%>%
group_by(sector) %>%
summarise_each(funs(sum))
我还尝试将列从字符转换为因子,但这没有帮助。
解决方案
缺乏数据,我将用mtcars
.
数据排序cyl=6
优先:
head(mtcars)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
# Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
# Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
但总结重新排序:
mtcars %>%
group_by(cyl) %>%
summarise_each(funs(sum))
# # A tibble: 3 x 11
# cyl mpg disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 4 293. 1156. 909 44.8 25.1 211. 10 8 45 17
# 2 6 138. 1283. 856 25.1 21.8 126. 4 3 27 24
# 3 8 211. 4943. 2929 45.2 56.0 235. 0 2 46 49
我们可以添加行号,适当地总结(但不同),然后重新排序:
mtcars %>%
mutate(rn = row_number()) %>%
group_by(cyl) %>%
summarise(rn = min(rn), across(-rn, ~ sum(.))) %>%
arrange(rn)
# # A tibble: 3 x 12
# cyl rn mpg disp hp drat wt qsec vs am gear carb
# <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 6 1 138. 1283. 856 25.1 21.8 126. 4 3 27 24
# 2 4 3 293. 1156. 909 44.8 25.1 211. 10 8 45 17
# 3 8 5 211. 4943. 2929 45.2 56.0 235. 0 2 46 49
推荐阅读
- sql-server - 使用 SSO UPN 进行授权的数据库方案
- dataframe - 执行代码以使用 graphviz 创建决策树时导致此 CalledProccessError 的原因是什么?
- android-studio - 操作栏顶部出现奇怪的白线
- java - 原始类型类 (java)
- javascript - 如何正确格式化 GWT 日期?
- c - 此 LDAP 错误是什么意思?“00000057:LdapErr:DSID-0C090B0B,注释:错误处理控制,数据 0,v3839”
- android - Kivy 没有在 Android 应用上加载图像,尽管它们的路径存在
- qt - CLion 设置 Qt 并收到大量错误说明“未定义对 '_imp___ZN 的引用
- java - 使用 Java 和处理连接 5 游戏实现
- css - 使用 flexbox 水平方向弄乱了我的对齐方式