Мне нужно найти среднее для данных с ячейками без значений - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно найти средние цены за все недели.Мне нужно сделать ggplot, чтобы показать, как цена в течение года.Когда вы находите среднее значение, как пустые ячейки влияют на среднее?

Я пробовал несколько вещей, включая использование функции melt (), поэтому у меня есть только 3 переменные.Переменная - это факторы, из которых я хочу найти среднее значение.

Company variable value
ns  Price week 24   1749
ns  Price week 24    
ns  Price week 24   1599
ns  Price week 24    
ns  Price week 24    
ns  Price week 24   359
ns  Price week 24   460

Я получил более 300 тыс. Аков и хотел бы иметь небольшой data.frame, где у меня есть только компания, Цена разных неделькак среднее.Теперь у меня есть все наблюдения для каждой недели, и мне нужно использовать среднее значение для использования GGplot.

Когда я использую следующий код

dat %in% mutate(means=mean(value), na.rm=TRUE)

, я получил предупреждение о том, что аргумент не числовойили логично: возвращение NA.

Я с нетерпением жду вашей помощи!

1 Ответ

1 голос
/ 13 июня 2019

Чистый код из комментария PavoDive

dt[!is.na(value), mean(value), by = .(price, week)]

и даже лучше

dt[ , mean(value, na.rm = TRUE), by = .(price, week)] 

Оригинал: Работает с использованием data.table.Первая часть отфильтровывает строки, которые не имеют числа в значении.Далее следует сказать, что мы хотим получить среднее значение из столбца значений.Final by определяет, как группировать строки.

Код:

dt[value >0 | value<1, .(MeanValues = mean(`value`)), by = c("Price", "Week")][]

Ввод:

dt <- data.table(`Price` = c("A","B","B","A","A","B","B","A"),
                  `Week`= c(1,2,1,1,2,2,1,2),
                  `value` = c(3,7,2,NA,1,46,1,NA))

   Price Week value
1:     A    1     3
2:     B    2     7
3:     B    1     2
4:     A    1    NA
5:     A    2     1
6:     B    2    46
7:     B    1     1
8:     A    2    NA

Вывод:

1:     A    1        3.0
2:     B    2       26.5
3:     B    1        1.5
4:     A    2        1.0
...