首页 > 解决方案 > 我无法汇总按年份 R 分组的记录值

问题描述

我有两列。第一列称为gdp_per_year该特定年份的 gdp。第二列是year。这是各自的年份。

中的值gdp_per_year采用格式,例如1,032,023,232,逗号用作千位分隔符。我已经尝试了许多不同的方法来解决这个问题,但到目前为止我无法弄清楚。我尝试了不同的代码来根据唯一值进行聚合和分组。我还从值中删除了,并用空白,替换了它们。.

我已经将值从字符转换为整数,但它仍然不起作用。

gdp_per_year <-  Suicides %>% select(gdp_per_year, year)

将其转换为整数。

gdp_per_year$gdp_per_year <-             
as.integer(as.character(gdp_per_year$gdp_per_year))

测试数字是否为整数,因为它不加起来

typeof(gdp_per_year$gdp_per_year)

它是整数

第一次尝试:

total_gdp_per_year <- aggregate(gdp_per_year$gdp_per_year, 
by=list(year=gdp_per_year$year), FUN=sum)

aggregate(gdp_per_year$gdp_per_year, 
by=list(gdp_per_year=gdp_per_year$year), FUN=sum)

print(total_gdp_per_year)

但这导致了一个错误

第二次尝试:

gdp_per_year %>% 
group_by(year) %>% 
summarise(gdp_per_year = sum(gdp_per_year))

我需要的是gdp_per_year按相应年份分组的值的总和。所以最后,我不应该有多年的双重输入值。gdp_per_year应该用他们的年份来总结。所有年份值必须是唯一的。

这是我通过在下面输入此代码收到的错误。gdp_per_year 有多个随机值缺失,并且同一年有重复值。例如,1994 年不止一次出现。

使用的代码在下面出现错误 1 ​​屏幕截图

gdp_per_year %>%
mutate(gdp_per_year = as.numeric(gsub(",", "", gdp_per_year))) %>%
group_by(year) %>%
summarise(gdp_per_year = sum(gdp_per_year))

运行 dput(head(gdp_per_year)) 的结果

structure(list(gdp_per_year = c("2156624900", "2156624900", "2156624900", 
"2156624900", "2156624900", "2156624900"), year = c(1987L, 1987L, 
1987L, 1987L, 1987L, 1987L)), row.names = c(NA, 6L), class = "data.frame")

标签: rdataframedplyrstatistics

解决方案


据我所知,您面临两个问题。首先,您必须转换gdp_per_year为数字。这可以通过删除每个,然后as.numeric在结果上使用来完成。

其次,可以dplyr按照您在第二次尝试中显示的那样完成聚合。

所以这可以工作:

gdp_per_year %>%
  mutate(gdp_per_year = as.numeric(gsub(",", "", gdp_per_year))) %>%
  group_by(year) %>%
  summarise(gdp_per_year = sum(gdp_per_year))

推荐阅读