我有两列。第一列被称为gdp_per_year,它是那个特定年份的国内生产总值。第二列是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应该根据他们的年龄进行相应的总结。所有年份值都必须是唯一的。
使用的代码给出了下面的错误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")发布于 2019-04-24 20:24:36
据我所知,你正面临着两个问题。首先,您必须将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))https://stackoverflow.com/questions/55828333
复制相似问题