gpt4 book ai didi

r - 基于变量中前 N 个最频繁值的子集数据框

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

我的目标是创建一个长数据框的简单密度或条形图,显示类(class) (MOOC) 中国籍的相对频率。我只是不想要所有的国籍,只想要前 10 名。我在下面创建了这个示例 df + 用于绘图的 ggplot2 代码。

d=data.frame(course=sample(LETTERS[1:5], 500,replace=T),nationality=as.factor(sample(1:172,500,replace=T)))
mm <- ggplot(d, aes(x=nationality, colour=factor(course)))
mm + geom_bar() + theme_classic()

...但正如所说:我想要一个基于频率的整个数据集的子集。以上显示了所有数据。

附注。我为上下文添加了 ggplot2 代码,但也因为 ggplot2 本身可能有一些东西可以使这成为可能(但是我对此表示怀疑)。

编辑 2014-12-11:
目前的答案使用 ddplyr 或 table 方法来到达所需的子集,但我想知道是否有更直接的方法来实现相同的..我现在就让它留下来,看看是否有其他方法。

最佳答案

使用 dplyr功能 counttop_n获得前 10 名的国籍。因为 top_n考虑到关系,这个例子中包含的国籍数量超过了 10 个。 arrange计数,使用 factorlevels按降序设置国籍。

# top-10 nationalities
d2 <- d %>%
count(nationality) %>%
top_n(10) %>%
arrange(n, nationality) %>%
mutate(nationality = factor(nationality, levels = unique(nationality)))

d %>%
filter(nationality %in% d2$nationality) %>%
mutate(nationality = factor(nationality, levels = levels(d2$nationality))) %>%
ggplot(aes(x = nationality, fill = course)) +
geom_bar()

enter image description here

关于r - 基于变量中前 N 个最频繁值的子集数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422229/

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