% group_by(name = replace(name, 6:n()-6ren">
gpt4 book ai didi

R:创建一个 "Other"变量

转载 作者:行者123 更新时间:2023-12-01 22:54:55 24 4
gpt4 key购买 nike

我正在使用 R 编程语言。

假设我有以下数据:

myFun <- function(n = 5000) {
a <- do.call(paste0, replicate(5, sample(LETTERS, n, TRUE), FALSE))
paste0(a, sprintf("%04d", sample(9999, n, TRUE)), sample(LETTERS, n, TRUE))
}

name = myFun(400)

variable = as.integer(abs(rnorm(400, 500,100)))

my_data = data.frame(name,variable)

我想保留前 5 行(基于“变量”的值)并将其他所有内容分组(总和)为“其他”。我想到了以下方法来做到这一点:

my_data <- my_data [order(-variable),]

my_data_top_5 = my_data[1:5,]

my_data_remainder = my_data[6:nrow(my_data),]
other_count = sum(my_data_remainder$variable)

other = data.frame( name = "other", variable = other_count)

final_result = rbind(my_data_top_5, other)

我认为这行得通 - 但是否有更有效的方法来做到这一点?

谢谢!

最佳答案

tidyverse中,根据'variable'的desc结束顺序排列数据,替换 'name' 从第 6 个开始到 'other' 并按 sum

分组
library(dplyr)
my_data %>%
arrange(desc(variable)) %>%
group_by(name = replace(name, 6:n(), "other")) %>%
summarise(variable = sum(variable, na.rm = TRUE), .groups = 'drop')

关于R:创建一个 "Other"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73504239/

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