在 R 中显示最高值和所有其他值的总和
Display top values and the sum of all other values in R
我在sqldf中使用order by TOTAL desc
后,我的结果是
NAME TOTAL
A 100
E 85
D 75
C 55
B 30
F 25
G 20
I 15
H 10
我想显示前 5 个(在本例中),其余的汇总为 'Others':
像这样:
NAME TOTAL
A 100
E 85
D 75
C 55
B 30
Others 70
有什么方法可以使用 R 实现吗?
假设您的数据已经排序,一种方法如下。它非常冗长,所以我很想看看其他解决方法。
df = read.table(text='NAME TOTAL
A 100
E 85
D 75
C 55
B 30
F 25
G 20
I 15
H 10',header=T,stringsAsFactors=F)
library(dplyr)
df %>%
mutate(NAME=ifelse(NAME %in% head(NAME,5),NAME,'other')) %>%
mutate(NAME=factor(NAME,levels=unique(NAME))) %>%
group_by(NAME) %>%
summarize(TOTAL=sum(TOTAL))
输出:
# A tibble: 6 x 2
NAME TOTAL
<fctr> <int>
1 A 100
2 E 85
3 D 75
4 C 55
5 B 30
6 other 70
希望对您有所帮助!
我在sqldf中使用order by TOTAL desc
后,我的结果是
NAME TOTAL
A 100
E 85
D 75
C 55
B 30
F 25
G 20
I 15
H 10
我想显示前 5 个(在本例中),其余的汇总为 'Others': 像这样:
NAME TOTAL
A 100
E 85
D 75
C 55
B 30
Others 70
有什么方法可以使用 R 实现吗?
假设您的数据已经排序,一种方法如下。它非常冗长,所以我很想看看其他解决方法。
df = read.table(text='NAME TOTAL
A 100
E 85
D 75
C 55
B 30
F 25
G 20
I 15
H 10',header=T,stringsAsFactors=F)
library(dplyr)
df %>%
mutate(NAME=ifelse(NAME %in% head(NAME,5),NAME,'other')) %>%
mutate(NAME=factor(NAME,levels=unique(NAME))) %>%
group_by(NAME) %>%
summarize(TOTAL=sum(TOTAL))
输出:
# A tibble: 6 x 2
NAME TOTAL
<fctr> <int>
1 A 100
2 E 85
3 D 75
4 C 55
5 B 30
6 other 70
希望对您有所帮助!