#r #dplyr
#r #dplyr
Вопрос:
Я использую Cigarette
набор данных из Ecdat
пакета. Мне нужно найти средний годовой рейтинг количества проданных пакетов на душу населения в период с 1985 по 1995 год. А также самый низкий, при этом более высокий ранг определяется как имеющий большее количество пакетов на душу населения.
Я попытался выполнить фильтрацию по году и вычислить среднюю переменную пакетов, используя median (packpc), и упорядочить по этой измененной переменной, но продолжаю получать сообщения об ошибках.
Есть предложения?
Комментарии:
1. Что такое «средний годовой ранг»? Если у вас есть 100 наблюдений и вы оцениваете их по чему угодно, медиана равна 50.
Ответ №1:
То, что вы ищете, это summarize
:
library(Ecdat)
library(dplyr)
Cigarette %>%
filter(year>=1985, year<=1995) %>%
summarise(min=min(packpc), median=median(packpc), max=max(packpc))
#> min median max
#> 1 49.2722 105.9096 197.994
Когда вы добавляете dplyr
тег к этому вопросу, вы можете захотеть ознакомиться с руководствами по этому пакету.
PS: Если это ваша домашняя работа, вы должны четко указать это, чтобы мы не просто выдавали ответ.
Ответ №2:
Я предполагаю, что идея состоит в том, чтобы получить ранги штатов за каждый год, а затем найти медиану и минимум этих рангов за эти годы.
Поскольку набор данных включает только годы с 1985 по 1995, нет необходимости в filter
редактировании.
Итак, я придумал это довольно уродливое решение:
ranks_perYear <- aggregate(packpc ~ year, Cigarette, rank)$packpc
colnames(ranks_perYear) <- levels(Cigarette$state)
medianRank <- apply(ranks_perYear, 2, median)
minRank <- apply(ranks_perYear, 2, min)
На самом деле я не совсем уверен, правильно ли здесь назначены состояния. Возможно, набор данных должен быть отсортирован по состоянию (например, dplyr::arrange(Cigarette, state)
) заранее.