gpt4 book ai didi

r - 按列分组并按 R 中的另一列排序

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

我正在用 R 检查 kaggle 中的 imdb 电影数据集。

这是一个最小的再现数据集:

> movies <- data.frame(movie = as.factor(c("Movie 1", "Movie 2", "Movie 3", "Movie 4")), director = as.factor(c("Dir 1", "Dir 2", "Dir 1", "Dir 3")), director_rating =  c(1000, 2000, 1000, 3000))

> movies
movie director director_rating
1 Movie 1 Dir 1 1000
2 Movie 2 Dir 2 2000
3 Movie 3 Dir 1 1000
4 Movie 4 Dir 3 3000

请注意,具有相同导演的每一行都具有相同的导演评分值。

我想列出董事,按评级排序,每个董事一行。以下代码有效:
> library(dplyr)
> movies %>%
group_by(director) %>%
summarize(director_rating = mean(director_rating)) %>%
arrange(desc(director_rating))

# A tibble: 3 x 2
director director_rating
<fctr> <dbl>
1 Dir 3 3000
2 Dir 2 2000
3 Dir 1 1000

但是,当我知道单个导演的所有评分都相同时,计算平均值似乎很浪费。在 R 中执行此操作的更惯用/有效的方法是什么?

最佳答案

实际上没有必要分组和总结,因为您只是在寻找不同/独特的条目。因此,dplyr 选项是:

select(movies, -movie) %>% 
distinct() %>%
arrange(desc(director_rating))
# director director_rating
#1 Dir 3 3000
#2 Dir 2 2000
#3 Dir 1 1000

或者,如果您想保留其他列:
distinct(movies, director, .keep_all = TRUE) %>%   # for dplyr >= 0.5.0
arrange(desc(director_rating))
# movie director director_rating
#1 Movie 4 Dir 3 3000
#2 Movie 2 Dir 2 2000
#3 Movie 1 Dir 1 1000

关于r - 按列分组并按 R 中的另一列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39470731/

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