我正在尝试添加新行Total
,这将是apples+bananas+oranges
的总和
Metric_name May Jun
1 apples 11 34
2 bananas 632 640
3 onions 479 503
4 oranges 910 939
我如何使用dplyr
答案 0 :(得分:0)
只需使用dplyr,就可以使用bind_rows
向data.frame添加一行。在这种情况下,summarise
语句的结果。由于汇总的结果是带有列名称的data.frame,因此将在正确的位置添加列,并为Metric_name添加一个空值。如果它具有NA值,则将其填充为Total值。
df1 %>%
bind_rows(df1 %>%
filter(Metric_name %in% c("apples","bananas","oranges")) %>%
summarise_if(is.numeric, funs(sum))) %>%
mutate(Metric_name = ifelse(is.na(Metric_name), "Total", Metric_name))
Metric_name May Jun
1 apples 11 34
2 bananas 632 640
3 onions 479 503
4 oranges 910 939
5 Total 1553 1613
数据:
df1 <- structure(list(Metric_name = c("apples", "bananas", "onions",
"oranges"), May = c(11L, 632L, 479L, 910L), Jun = c(34L, 640L,
503L, 939L)), class = "data.frame", row.names = c("1", "2", "3",
"4"))
答案 1 :(得分:0)
由于dplyr
,这不是绝对的rbind
风格,我认为有更好的方法,但这是一个解决方案
df %>%
filter(Metric_name %in% c("apples", "bananas", "oranges")) %>%
rbind( c("Total", sum(.$May), sum(.$Jun)) ) %>%
filter(Metric_name == "Total") %>%
rbind(df, .)
# A tibble: 5 x 3
Metric_name May Jun
<chr> <chr> <chr>
1 apples 11 34
2 bananas 632 640
3 onions 479 503
4 oranges 910 939
5 Total 1553 1613
PS:我已经使用了answer,但是我做不到相同的事情,即在制作.$
时删除May
之前的Jun
和sum