#r
#r
Вопрос:
Я пытаюсь рассчитать среднее значение для каждого города, в котором более 50 000 положительных тестов на covid. Когда я пытаюсь выполнить следующий код:
covidJoined %>% group_by(Admin2) %>% filter(numOfCases > 50000) %>% slice(which.max(numOfCases)) %>% mean(as.numeric(covidJoined$Population), na.rm = TRUE)
Я получаю следующую ошибку: аргумент не является числовым или логическим: возврат NA
Как я могу это исправить?
summary(covidJoined)
Admin2 Lat Long_ date numOfCases Population
Length:15240 Min. : 0.00 Min. :-123.9 Length:15240 Min. : 0 Min. : 1175
Class :character 1st Qu.:36.44 1st Qu.:-122.0 Class :character 1st Qu.: 1 1st Qu.: 45578
Mode :character Median :37.98 Median :-120.8 Mode :character Median : 77 Median : 179140
Mean :36.58 Mean :-116.7 Mean : 4108 Mean : 642310
3rd Qu.:39.20 3rd Qu.:-119.8 3rd Qu.: 1389 3rd Qu.: 685306
Max. :41.74 Max. : 0.0 Max. :271371 Max. :9818605
NA's :508
str(covidJoined)
tibble [15,240 x 6] (S3: tbl_df/tbl/data.frame)
$ Admin2 : chr [1:15240] "Alameda" "Alameda" "Alameda" "Alameda" ...
$ Lat : num [1:15240] 37.6 37.6 37.6 37.6 37.6 ...
$ Long_ : num [1:15240] -122 -122 -122 -122 -122 ...
$ date : chr [1:15240] "1/22/20" "1/23/20" "1/24/20" "1/25/20" ...
$ numOfCases: num [1:15240] 0 0 0 0 0 0 0 0 0 0 ...
$ Population: num [1:15240] 1510271 1510271 1510271 1510271 1510271 ...
Комментарии:
1. Проблема не
na.rm
в этом. Проблема в том, что вы передаете data.frame в mean . Я думаю, вы хотите что-то вродеsummarise(mean(as.numeric(Population), na.rm = TRUE))
2. Привет, Стефан! Я получаю 1 Лос-Анджелес 9818605 2 Оранжевый 3010232 3 Риверсайд 2189641 4 Сан-Бернардино 2035210 Я хотел бы получить среднее из этих 4
3. Это потому, что ваш df сгруппирован. Добавьте
ungroup
перед подведением итогов.
Ответ №1:
Вы можете попробовать что-то вроде:
covidJoined %>%
filter(numOfCases > 50000) %>%
group_by(Admin2) %>%
summarise(avg_Pop = mean(Population))
Комментарии:
1. Привет, Алекс! Я получаю 1 Лос-Анджелес 9818605 2 Оранжевый 3010232 3 Риверсайд 2189641 4 Сан-Бернардино 2035210 Я хотел бы получить среднее из этих 4
2. Удалите
group_by()
строку, если вам нужно общее среднее значение.