Group_by 和 summarize_each 更改索引列的原始顺序
Group_by with summarize_each changes the original order of index column
我正在尝试根据包含经济部门的第一列对数据集进行分组和求和。问题是当我这样做时,第一列条目的原始顺序变为字母顺序。我需要保留此订单以供以后分析。这是我的代码:
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
我正在尝试根据包含经济部门的第一列对数据集进行分组和求和。问题是当我这样做时,第一列条目的原始顺序变为字母顺序。我需要保留此订单以供以后分析。这是我的代码:
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