Я не могу агрегировать значения записей, сгруппированных по году R - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть две колонки.Первый столбец называется 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 следует суммировать соответственно с их годами.Все значения года должны быть уникальными.

Это ошибка, которую я получаю, введя этот код ниже.Отсутствует несколько случайных значений для 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")

1 Ответ

0 голосов
/ 24 апреля 2019

Насколько я могу судить, вы столкнулись с двумя проблемами.Сначала вы должны преобразовать 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...