Мне нужно преобразовать свои почасовые данные в ежедневные, взяв сумму

набор данных:

structure(list(time = structure(c(1506406740, 1506406770, 1506406860, 
1506406890, 1506406920, 1506406950, 1506406980, 1506407010, 1506407040, 
1506407070), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
Column3 = c(131, 131, 131, 131, 131, 131, 131, 131, 131, 
131), m_Pm = c(2.402842, 2.556558, 2.805165, 2.97428, 3.101824, 
3.23984, 3.359587, 3.474448, 3.62753, 3.773597)), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame")) 

Хорошо работает до первой агрегатной функции. после этого я не могу получить правильный ответ после функции суммы. Вместо этого я получаю большие значения

library(dplyr)
library(ggplot2)

attach(data)
data %>% #filtering 131 and 132
  select(time,Column3,m_Pm) %>%
  filter(data,Column3=="131") 
filter(data,Column3=="132")
data_131<-filter(data,Column3=="131") 
data_132<-filter(data,Column3=="132") 

#datehour column (dailyaverage)
data_131$datehour<-format(data_131$time,"%Y-%m-%d %H")
aggregate(m_Pm~datehour,data_131, mean)

#datecolumn

data_131$date1<-format(data_131$time,"%Y-%m-%d")
dE_131<-aggregate(m_Pm~date1,data_131,sum)
dE_131}

Поскольку данных слишком много, я не могу публиковать их здесь. Это данные за 7 месяцев каждые 30 секунд.

пожалуйста, поделитесь и своим набором данных.

Jimmy 10.09.2018 09:28

Проверка @SalmanLashkarara править

zaara 10.09.2018 09:30

изображение не очень хорошее. вы можете запустить dput(head(YourDataSet,10)), и он даст вам образец из 10 строк

Jimmy 10.09.2018 09:38

@SalmanLashkarara готово

zaara 10.09.2018 09:47

Взгляните на пакет tibbletimegithub.com/business-science/tibbletime

Tung 10.09.2018 09:48
aggregate(.~time,transform(data,time=as.Date(time)),sum)
Onyambu 10.09.2018 09:57

@Onyambu извини, я не понимаю

zaara 10.09.2018 09:58

@fatma попробуйте еще раз

Onyambu 10.09.2018 09:59

@Onyambu где мне добавить этот код?

zaara 10.09.2018 10:06
0
9
948
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
library(dplyr)
df %>% mutate(dayH= format(time,"%Y-%m-%d %H"), day= format(time,"%Y-%m-%d")) %>% 
       group_by(dayH) %>% mutate(th=mean(m_Pm)) %>% distinct(dayH, .keep_all = TRUE) %>% 
       group_by(day) %>% summarise(tday=sum(th))

# A tibble: 1 x 2
  day         tday
  <chr>      <dbl>
1 2017-09-26  15.7


df %>% mutate(dayH= format(time,"%Y-%m-%d %H"), day= format(time,"%Y-%m-%d"), month=format(time,"%Y-%m")) %>% 
       group_by(dayH) %>% mutate(th=mean(m_Pm)) %>% distinct(dayH, .keep_all = TRUE) %>% 
       group_by(day) %>% mutate(tday=sum(th)) %>% distinct(day, .keep_all = TRUE) %>% 
       group_by(month) %>% summarise(tmonth=sum(tday))

Ошибка в mutate_impl (.data, точки): ошибка оценки: недопустимый аргумент обрезки.

zaara 10.09.2018 10:24

но мне нужно суммировать почасовые данные, чтобы получить общую дневную стоимость

zaara 10.09.2018 10:51

привет, сначала я беру почасовую стоимость, принимая среднее значение на почасовой основе. теперь я хочу взять сумму почасовых данных, чтобы получать ежедневно. я надеюсь ты понял

zaara 10.09.2018 10:59

Хотя это может ответить на вопрос авторов, в нем отсутствуют некоторые поясняющие слова и ссылки на документацию. Фрагменты исходного кода не очень полезны без некоторых фраз. Вы также можете найти как написать хороший ответ очень полезным. Пожалуйста, отредактируйте свой ответ.

hellow 10.09.2018 11:11

@ A.Suliman большое вам спасибо! и после этого что, если я захочу сложить все дневные данные в один, чтобы получить ежемесячное значение? пожалуйста помоги

zaara 10.09.2018 12:32

мне снова нужна помощь

zaara 11.09.2018 15:41

Другие вопросы по теме