本文介绍了R将两个变量相加的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在R中有一个数据框,通常采用这种格式:

I have a data frame in R that generally takes this form:

ID     Year     Amount
3       2000      45
3       2000      55
3       2002      10
3       2002      10
3       2004      30
4       2000      25
4       2002      40
4       2002      15
4       2004      45
4       2004      50

我想按ID汇总金额

ID      Year     Amount
3       2000      100
3       2002       20
3       2004       30
4       2000       25
4       2002       55
4       2004       95

这是我需要做的一个例子,实际上数据要大得多。请帮忙,谢谢!

This is an example of what I need to do, in reality the data is much larger. Please help, thank you!

推荐答案

您可以 group_by ID Year ,然后在 summarise中使用 sum

You can group_by ID and Year then use sum within summarise

library(dplyr)

txt <- "ID Year Amount
3 2000 45
3 2000 55
3 2002 10
3 2002 10
3 2004 30
4 2000 25
4 2002 40
4 2002 15
4 2004 45
4 2004 50"

df <- read.table(text = txt, header = TRUE)

df %>%
  group_by(ID, Year) %>%
  summarise(Total = sum(Amount, na.rm = TRUE))
#> # A tibble: 6 x 3
#> # Groups:   ID [?]
#>      ID  Year Total
#>   <int> <int> <int>
#> 1     3  2000   100
#> 2     3  2002    20
#> 3     3  2004    30
#> 4     4  2000    25
#> 5     4  2002    55
#> 6     4  2004    95

如果您有多个金额列&要应用多个功能,可以使用 summarise_if summarise_all

If you have more than one Amount column & want to apply more than one function, you can use either summarise_if or summarise_all

df %>%
  group_by(ID, Year) %>%
  summarise_if(is.numeric, funs(sum, mean))
#> # A tibble: 6 x 4
#> # Groups:   ID [?]
#>      ID  Year   sum  mean
#>   <int> <int> <int> <dbl>
#> 1     3  2000   100  50
#> 2     3  2002    20  10
#> 3     3  2004    30  30
#> 4     4  2000    25  25
#> 5     4  2002    55  27.5
#> 6     4  2004    95  47.5

df %>%
  group_by(ID, Year) %>%
  summarise_all(funs(sum, mean, max, min))
#> # A tibble: 6 x 6
#> # Groups:   ID [?]
#>      ID  Year   sum  mean   max   min
#>   <int> <int> <int> <dbl> <dbl> <dbl>
#> 1     3  2000   100  50      55    45
#> 2     3  2002    20  10      10    10
#> 3     3  2004    30  30      30    30
#> 4     4  2000    25  25      25    25
#> 5     4  2002    55  27.5    40    15
#> 6     4  2004    95  47.5    50    45

这篇关于R将两个变量相加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 03:07
查看更多