Доброго времени суток и привет! Это мой первый пост о переполнении стека. Я новичок в R и даже в более новом dplyr. У меня есть небольшой набор данных, состоящий из двух столбцов - var1 и var2. Столбец var1 состоит из num значений. Столбец var2 состоит из факторов с 3 уровнями - A, B и C.
var1 var2
1 1.4395244 A
2 1.7698225 A
3 3.5587083 A
4 2.0705084 A
5 2.1292877 A
6 3.7150650 B
7 2.4609162 B
8 0.7349388 B
9 1.3131471 B
10 1.5543380 B
11 3.2240818 C
12 2.3598138 C
13 2.4007715 C
14 2.1106827 C
15 1.4441589 C
'data.frame': 15 obs. of 2 variables:
$ var1: num 1.44 1.77 3.56 2.07 2.13 ...
$ var2: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 2 2 2 2 2 ...
Я пытаюсь использовать dplyr для group_by var2 (A, B и C), затем подсчитывать и суммировать var1 с помощью среднего и sd. Подсчет работает, но вместо того, чтобы предоставлять среднее значение и стандартное отклонение для каждой группы, я получаю общее среднее значение и стандартное отклонение рядом с каждой группой.
Чтобы попытаться решить эту проблему, я провел несколько поисков в Интернете. Похоже, все результаты имеют синтаксис, аналогичный тому, который я использую. Я также прочитал все рекомендуемые сообщения, которые предлагал Stack Overflow перед публикацией. Кроме того, я попытался перезапустить R и убедился, что не использую plyr.
Вот код, который я использовал для создания набора данных и dplyr group_by / summarize.
library(dplyr)
set.seed(123)
var1 <- rnorm(15, mean=2, sd=1)
var2 <- c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B",
"C", "C", "C", "C", "C")
df <- data.frame(var1, var2)
df
df %>%
group_by(df$var2) %>%
summarize(
count = n(),
mean = mean(df$var1, na.rm = TRUE),
sd = sd(df$var1, na.rm = TRUE)
)
Вот результаты:
# A tibble: 3 x 4
`df$var2` count mean sd
<fct> <int> <dbl> <dbl>
1 A 5 2.15 0.845
2 B 5 2.15 0.845
3 C 5 2.15 0.845
Счетчик работает, показывая счет по 5 для каждой группы. Каждая группа показывает общее среднее значение и стандартное отклонение для всего столбца, а не для каждой группы. Ожидаемые результаты - это количество, среднее значение и стандартное отклонение для каждой группы.
Я уверен, что упускаю из виду кое-что очевидное, но буду очень признателен за любую помощь.
Спасибо!
$
при обращении к именам столбцов вdplyr
,df %>% group_by(var2) %>% summarize( count = n(), mean = mean(var1, na.rm = TRUE), sd = sd(var1, na.rm = TRUE) )
- person Ronak Shah   schedule 25.07.2019group_by(var2)
,mean(var1)
иsd(var1)
, неmean(df$var1)
,sd(df$var1)
. Второй синтаксис дает значение для всего столбца, а не для сгруппированной переменной. - person neilfws   schedule 25.07.2019