сообщение об ошибке при вычислении описательной статистики

#r

#r

Вопрос:

Я хочу вычислить M, SD, Min и Max для заданной переменной в моих данных. Образец данных является:

 id-visit  x
1-01      5
1-01      1
1-01      6
1-04      NA
1-04      NA
1-04      1
  

Пример кода является:

 df1 <- df %>%
  group_by(id-visit) %>%
  mutate(x_M = mean(x, na.rm = T), x_MIN = min(x, na.rm = T), 
         x_MAX = max(x, na.rm = T), x_SD = sd(x, na.rm = T))
  

Когда я использую этот код, я получаю следующее сообщение об ошибке. Я полагаю, что это происходит потому, что я прошу R вернуть среднее значение для person 1-04, но у них есть только 1 значение, а остальные отсутствуют.

Есть ли способ, которым я могу сказать R присвоить этому человеку среднее значение 1, максимальное значение 1, минимальное значение 1 и SD, равное 0?

 Warning messages:
1: Problem with `mutate()` input `x_MIN`.
ℹ no non-missing arguments to min; returning Inf
ℹ Input `x_MIN` is `min(x, na.rm = T)`.
ℹ The error occurred in group 499: subject_id = "1-04". 
2: In min(x, na.rm = T) :
  no non-missing arguments to min; returning Inf
3: Problem with `mutate()` input `x_MAX`.
ℹ no non-missing arguments to max; returning -Inf
ℹ Input `x_MAX` is `max(x, na.rm = T)`.
ℹ The error occurred in group 499: subject_id = "1-04". 
4: In max(x, na.rm = T) :
  no non-missing arguments to max; returning -Inf
  

Ответ №1:

Это предупреждающие сообщения. Вы можете replace NA с 1/0 на основе имени столбца.

 library(dplyr)

df %>%
  group_by(id.visit) %>%
  mutate(x_M = mean(x, na.rm = TRUE), x_MIN = min(x, na.rm = TRUE), 
         x_MAX = max(x, na.rm = TRUE), x_SD = sd(x, na.rm = TRUE), 
         across(x_M:x_MAX, tidyr::replace_na, 1), 
         x_SD = replace(x_SD ,is.na(x_SD), 0))

#  id.visit     x   x_M x_MIN x_MAX  x_SD
#  <chr>    <int> <dbl> <dbl> <dbl> <dbl>
#1 1-01         5     4     1     6  2.65
#2 1-01         1     4     1     6  2.65
#3 1-01         6     4     1     6  2.65
#4 1-04        NA     1     1     1  0   
#5 1-04        NA     1     1     1  0   
#6 1-04         1     1     1     1  0   
  

Комментарии:

1. Спасибо @Ronak Shah. Очень признателен!