gpt4 book ai didi

r - 如何使用 fct_reorder 对数据帧中的因子重新排序?

转载 作者:行者123 更新时间:2023-12-04 12:45:53 25 4
gpt4 key购买 nike

考虑下面的例子

> library(forcats)
> library(dplyr)
>
>
> dataframe <- data_frame(var = c(1,1,1,2,3,4),
+ var2 = c(10,9,8,7,6,5))
> dataframe
# A tibble: 6 x 2
var var2
<dbl> <dbl>
1 1.00 10.0
2 1.00 9.00
3 1.00 8.00
4 2.00 7.00
5 3.00 6.00
6 4.00 5.00

我创建了一个因子变量
> dataframe <- dataframe %>% mutate(myfactor = factor(var))
>
> dataframe$myfactor
[1] 1 1 1 2 3 4
Levels: 1 2 3 4

我不明白根据在因子级别完成的一些其他计算重新排序这个因子的正确语法(和逻辑)是什么。

例如,我想根据减少的值重新排序我的因子
> data_rank <- dataframe %>% group_by(myfactor) %>% summarise(rank_var = mean(var2))

> data_rank
# A tibble: 4 x 2
myfactor rank_var
<fct> <dbl>
1 1 9.00
2 2 7.00
3 3 6.00
4 4 5.00

所以 4 将是第一个,3 将是第二个,依此类推。

使用 fct_reorder 这样做的语法是什么? ,其背后的逻辑是什么?

谢谢!

最佳答案

假设您的 dataframe是:

dataframe <- data_frame(var = c(1,1,1,2,3,4),var2 = c(10,2,0,15,6,5))
dataframe <- dataframe %>% mutate(myfactor = factor(var))
dataframe$myfactor

[1] 1 1 1 2 3 4
Levels: 1 2 3 4

现在,如果您想重新订购您的 factor ,其中 订购 由某个 的输出给出功能 fun某某 矢量 x那么你可以使用 fct_reorder通过以下方式:
dataframe$myfactor= fct_reorder(f = dataframe$myfactor,x = dataframe$var2,fun = mean)
dataframe$myfactor
[1] 1 1 1 2 3 4
Levels: 1 4 3 2
meandataframe$var2每个 factor默认情况下将按升序计算和排序以对因子进行排序。

关于r - 如何使用 fct_reorder 对数据帧中的因子重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799074/

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