如何获取数据框中rowSums的Top值及对应descriptions列内容
R语言计算行和并排序生成结果数据框
给定如下R语言数据框,需完成以下操作:
- 计算每行的行和(rowSums)
- 按行和从大到小排序
- 提取对应的
descriptions列与行和,生成名为top_descriptions的结果数据框,包含descriptions和row_sums两列
示例数据框代码:
set.seed(101) df = data.frame(descriptions = LETTERS, col1 = round(runif(26 , min = 2, max = 250)), col2 = round(runif(26 , min = 2, max = 250)), col3 = round(runif(26 , min = 2, max = 250)))
解决方案
方法1:基础R实现
# 计算行和并添加为新列 df$row_sums = rowSums(df[, c("col1", "col2", "col3")]) # 按行和降序排序,提取目标列生成结果数据框 top_descriptions = df[order(-df$row_sums), c("descriptions", "row_sums")]
方法2:dplyr包实现(管道式操作)
若已安装dplyr包,可使用更简洁的管道语法:
library(dplyr) top_descriptions = df %>% mutate(row_sums = rowSums(across(col1:col3))) %>% # 计算行和 arrange(desc(row_sums)) %>% # 按行和降序排序 select(descriptions, row_sums) # 提取目标列
期望结果结构
结果数据框top_descriptions的结构如下(数值为示例):
| descriptions | row_sums |
|---|---|
| G | 553 |
| Y | 507 |
| B | 430 |
| A | 412 |
| R | 356 |
| C | 321 |
| D | 305 |
| F | 243 |
| J | 222 |
| O | 212 |
| N | 202 |
| E | 195 |
| T | 187 |
| X | 167 |
| W | 132 |
| L | 111 |
内容的提问来源于stack exchange,提问作者Valentin
相关产品推荐
相关产品推荐

