我的数据框如下所示:
View(df)
Product Value
a 2
b 4
c 3
d 10
e 15
f 5
g 6
h 4
i 50
j 20
k 35
l 25
m 4
n 6
o 30
p 4
q 40
r 5
s 3
t 40
我想找到9种最昂贵的产品,并总结其余的产品 . 它应该如下所示:
Product Value
d 10
e 15
i 50
j 20
k 35
l 25
o 30
q 40
t 40
rest 46
休息是其他11种产品的总和 . 我用 summaries
尝试了它,但它不起作用:
new <- df %>%
group_by(Product)%>%
summarise((Value > 10) = sum(Value)) %>%
ungroup()
3 回答
我们可以使用
dplyr::row_number
在使用arrange
按Value
对数据进行排序后对观测值进行有效排名 . 然后,我们扩充Product
列,以便不在前9中的任何值编码为Rest
. 最后,我们按更新的Product
进行分组,并使用summarise
获取总和数据
使用
dplyr
的另一种方法是使用do
创建结果 . 代码变得有点难以阅读,因为你需要使用.$
,但你可以避免使用ifelse/if_else
. 在按Value
排列订单后,您可以创建两个向量 . 一个有前九个产品名称和"rest" . 另一个具有前九个值和其他值的总和 . 您可以使用do
直接创建数据框 .这是使用
data.table
的一个选项