gpt4 book ai didi

r - 如何在 R 中按组和数字提取前 x% 的行?

转载 作者:行者123 更新时间:2023-12-02 02:44:02 27 4
gpt4 key购买 nike

假设我有这个数据集(不是我正在使用的原始数据)

data <- data.frame(
name=c( rep("A",500), rep("B",500), rep("B",500), rep("C",20), rep('D', 100) ),
value=c( rnorm(500, 10, 5), rnorm(500, 13, 1), rnorm(500, 18, 1), rnorm(20, 25, 4), rnorm(100, 12, 1) )
)

我希望我的代码

  1. 群组名称
  2. 按降序排列
  3. 并选择前 30%,但不是按我的 value 变量的值,而是按每个名称的行数

我的代码是这样开始的:

data <- data %>%
arrange(name, value) %>%

我读过有关 top_frac() 的内容,但据我了解,它选择了值的前 x%。

提前致谢!

最佳答案

这里有一个解决方案。它按 name 组选择前 30% 的值,然后对每组中选择的行进行计数。

library(dplyr)

data %>%
group_by(name) %>%
arrange(name, value) %>%
top_frac(0.30) %>%
count(name)
#Selecting by value
## A tibble: 4 x 2
## Groups: name [4]
# name n
# <chr> <int>
#1 A 150
#2 B 300
#3 C 6
#4 D 30

可以看出,这些数字实际上是每组 name 的 30%,

data %>% count(name) %>% mutate(n = n*0.3)
# name n
#1 A 150
#2 B 300
#3 C 6
#4 D 30

如果您想要前 30% 的值,而不考虑前值来自哪个组,则必须将上面的代码更改为以下代码。

data %>%
arrange(name, value) %>%
top_frac(0.30) %>%
count(name)
#Selecting by value
# name n
#1 A 46
#2 B 420
#3 C 20

关于r - 如何在 R 中按组和数字提取前 x% 的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63103374/

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