Как вписать средства в конкретные наблюдения в колонке? - PullRequest
1 голос
/ 25 апреля 2019

На данный момент у меня есть задание, включающее таблицу данных, которая включает информацию о наблюдениях за видами животных, измеряемыми в различных случаях.В столбце «вес» моих данных пропущены значения, которые я должен заменить средним весом для вида, из которого происходит животное.Поэтому я хотел бы, чтобы средний вес для вида "albigula", равный 148, заменил NA в двух случаях, когда вес животных не был зарегистрирован, так что у меня есть полный набор данных.Затем мне нужно повторить этот процесс для еще 10 или около того видов.

Я не могу придумать способ сделать это, кроме следующего:

    albigula <- filter(surveys_combined_year, surveys_combined_year$species == "albigula")
    albigula$weight %>% mean(na.rm= TRUE)

Однако, очевидно, это не такработать так, как я не могу вписать среднее значение в его конкретное место в "surveyys_combined_year $ weight".

Извините за вопрос о супер-новичке, я искал все ресурсы, которые нам дали в классе, и я до сих порне могу понять, что мне не хватает.

Помогите мне, пожалуйста!

1 Ответ

4 голосов
/ 25 апреля 2019

Мы можем сделать group_by replace. Сгруппированные по «видам», replace NA (replace_na) элементов по «весу» по mean из «веса»

library(dplyr)
library(tidyr)
out <- surveys_combined_year %>%
         group_by(species) %>%
         mutate(weight = replace_na(weight, mean(weight, na.rm = TRUE)))

РЕДАКТИРОВАТЬ - изменено replace на replace_na (комментарии @BenBolker)

...