按R中的列值分组计算总和

按R中的列值分组计算总和,r,plyr,dplyr,R,Plyr,Dplyr,我有一个包含两列的数据框,一列是Ref\u Date列,另一列是Value列。从1988年到2015年,date列每年包含12行。我需要做的是仅按年份分组并汇总值列,以便每年只能得到一行,其中包含该年12个月内每个月的所有值之和: row.names Ref_Date Value 166483 1989/01 713 166484 1989/02 771 166485 1989/03 565 166486 1989/04

我有一个包含两列的数据框,一列是
Ref\u Date
列,另一列是
Value
列。从1988年到2015年,date列每年包含12行。我需要做的是仅按年份分组并汇总
列,以便每年只能得到一行,其中包含该年12个月内每个月的所有值之和:

row.names   Ref_Date    Value
166483      1989/01     713
166484      1989/02     771
166485      1989/03     565
166486      1989/04     1248
166487      1989/05     1380
166488      1989/06     1118
166489      1989/07     1026
166490      1989/08     995
166491      1989/09     835
166492      1989/10     939
166493      1989/11     878
166494      1989/12     1075
166495      1990/01     878
166496      1990/02     563
166497      1990/03     773
166498      1990/04     1131
166499      1990/05     1562
166500      1990/06     1747
166501      1990/07     1258
166502      1990/08     791

您可以将以下代码与dplyr一起使用:

library(dplyr)
df %>% 
  group_by(year = substr(Ref_Date, 1, 4)) %>%     # create the groups
  summarise(Value = sum(Value))

#Source: local data frame [2 x 2]
#
#  year Value
#1 1989 11543
#2 1990  8703
或者与
数据表类似

library(data.table)
setDT(df)[, sum(Value), by = .(year = substr(Ref_Date, 1, 4))]
#   year    V1
#1: 1989 11543
#2: 1990  8703
还是用R基

with(df, aggregate(Value ~ cbind(year = substr(Ref_Date, 1, 4)), FUN = sum))
#  year Value
#1 1989 11543
#2 1990  8703

您可以将以下代码与dplyr一起使用:

library(dplyr)
df %>% 
  group_by(year = substr(Ref_Date, 1, 4)) %>%     # create the groups
  summarise(Value = sum(Value))

#Source: local data frame [2 x 2]
#
#  year Value
#1 1989 11543
#2 1990  8703
或者与
数据表类似

library(data.table)
setDT(df)[, sum(Value), by = .(year = substr(Ref_Date, 1, 4))]
#   year    V1
#1: 1989 11543
#2: 1990  8703
还是用R基

with(df, aggregate(Value ~ cbind(year = substr(Ref_Date, 1, 4)), FUN = sum))
#  year Value
#1 1989 11543
#2 1990  8703

您可以将以下代码与dplyr一起使用:

library(dplyr)
df %>% 
  group_by(year = substr(Ref_Date, 1, 4)) %>%     # create the groups
  summarise(Value = sum(Value))

#Source: local data frame [2 x 2]
#
#  year Value
#1 1989 11543
#2 1990  8703
或者与
数据表类似

library(data.table)
setDT(df)[, sum(Value), by = .(year = substr(Ref_Date, 1, 4))]
#   year    V1
#1: 1989 11543
#2: 1990  8703
还是用R基

with(df, aggregate(Value ~ cbind(year = substr(Ref_Date, 1, 4)), FUN = sum))
#  year Value
#1 1989 11543
#2 1990  8703

您可以将以下代码与dplyr一起使用:

library(dplyr)
df %>% 
  group_by(year = substr(Ref_Date, 1, 4)) %>%     # create the groups
  summarise(Value = sum(Value))

#Source: local data frame [2 x 2]
#
#  year Value
#1 1989 11543
#2 1990  8703
或者与
数据表类似

library(data.table)
setDT(df)[, sum(Value), by = .(year = substr(Ref_Date, 1, 4))]
#   year    V1
#1: 1989 11543
#2: 1990  8703
还是用R基

with(df, aggregate(Value ~ cbind(year = substr(Ref_Date, 1, 4)), FUN = sum))
#  year Value
#1 1989 11543
#2 1990  8703

另一个答案可能是(使用
tapply
):


years另一个答案可能是(使用
tapply
):


years另一个答案可能是(使用
tapply
):


years另一个答案可能是(使用
tapply
):




years+1击败了我,尽管对初学者来说,将突变语句分离成它自己的逻辑可能更有帮助——即
mutate(year=substr(Ref_Date,1,4))
然后是
groupby(year)
你能不能再写一次这个语句,但不要使用管道?@JFBeaulieu,我相信这对你来说是一个很好的锻炼。我已经用勺子喂过你了,代码+1比我快,尽管对初学者来说,将突变语句分成它自己的逻辑可能更有帮助——即
mutate(year=substr(Ref_Date,1,4))
后跟
group_by(year)
你能不能再写一次这个语句,但不要使用管道?@JFBeaulieu,我相信这对你来说是一个很好的锻炼。我已经用勺子喂过你了,代码+1比我快,尽管对初学者来说,将突变语句分成它自己的逻辑可能更有帮助——即
mutate(year=substr(Ref_Date,1,4))
后跟
group_by(year)
你能不能再写一次这个语句,但不要使用管道?@JFBeaulieu,我相信这对你来说是一个很好的锻炼。我已经用勺子喂过你了,代码+1比我快,尽管对初学者来说,将突变语句分成它自己的逻辑可能更有帮助——即
mutate(year=substr(Ref_Date,1,4))
后跟
group_by(year)
你能不能再写一次这个语句,但不要使用管道?@JFBeaulieu,我相信这对你来说是一个很好的锻炼。我已经填鸭式地告诉了你为什么这会被否决?它正在被否决(虽然还没有否决,但有一种不可抗拒的冲动),因为我们希望发布一个新用户的图片,而不是一个在网站上有你经验的人。我们应该如何复制这个?通过手工书写每一个值?请遵循中的指南,可能是因为它没有证明研究工作,而且数据仅以图像形式呈现(即不可复制)。@各位,我已以纯文本形式发布了数据。很抱歉,这真的是两个问题-如何从字符串中提取年份,以及如何获得组的平均值。这两个网站上都有很多重复的内容-我认为这是下一个投票人面临的更大问题?为什么会被下一个投票?这是下一个投票(还没有下一个投票,但有一种不可抗拒的冲动),因为我们希望从一个新用户那里发布一张图片,而不是从网站上有你经验的人那里发布。我们应该如何复制这个?通过手工书写每一个值?请遵循中的指南,可能是因为它没有证明研究工作,而且数据仅以图像形式呈现(即不可复制)。@各位,我已以纯文本形式发布了数据。很抱歉,这真的是两个问题-如何从字符串中提取年份,以及如何获得组的平均值。这两个网站上都有很多重复的内容-我认为这是下一个投票人面临的更大问题?为什么会被下一个投票?这是下一个投票(还没有下一个投票,但有一种不可抗拒的冲动),因为我们希望从一个新用户那里发布一张图片,而不是从网站上有你经验的人那里发布。我们应该如何复制这个?通过手工书写每一个值?请遵循中的指南,可能是因为它没有证明研究工作,而且数据仅以图像形式呈现(即不可复制)。@各位,我已以纯文本形式发布了数据。很抱歉,这真的是两个问题-如何从字符串中提取年份,以及如何获得组的平均值。这两个网站上都有很多重复的内容-我认为这是下一个投票人面临的更大问题?为什么会被下一个投票?这是下一个投票(还没有下一个投票,但有一种不可抗拒的冲动),因为我们希望从一个新用户那里发布一张图片,而不是从网站上有你经验的人那里发布。我们应该如何复制这个?通过手工书写每一个值?请遵循中的指南,可能是因为它没有证明研究工作,而且数据仅以图像形式呈现(即不可复制)。@各位,我已以纯文本形式发布了数据。很抱歉,这真的是两个问题-如何从字符串中提取年份,以及如何获得组的平均值。这两个网站上都有很多重复的内容——我认为这是下层选民面临的更大问题?这对我很有用。。。只需要将第二行改为:sums哦,我很高兴它这么做了,我不知道你把值存储为字符串。但我想最终还是可以的。这基本上是@docendos解决方案。应该是一个普通人