R: Синхронизация данных из нескольких источников в 1 строку в день - PullRequest
0 голосов
/ 31 мая 2018

Я собрал данные из разных источников, что означает, что собранные данные не синхронизированы.У меня есть следующие данные:

date                 x  y  z
1990-01-01 13:00:00  1  NA NA
1990-01-01 14:00:00  NA 4  NA
1990-01-01 16:30:00  NA NA 3
1990-01-02 12:30:00  NA 2  NA
1990-01-02 13:30:00  NA NA 6
1990-01-02 14:30:00  2  NA NA
1990-01-03 09:30:00  NA 3  NA
1990-01-03 12:30:00  NA NA 4
1990-01-03 13:30:00  5  NA NA
...

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

date        x  y  z
1990-01-01  1  4  3
1990-01-02  2  2  6
1990-01-03  5  3  4

У меня вроде получилосьслепое пятно на этом ..

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Используя summarise_all из dplyr

df$date=as.Date(df$date)
df%>%group_by(date)%>%summarise_all(funs(sum(.,na.rm=T)))# more than one value not NA
#df%>%group_by(date)%>%summarise_all(funs(.[!is.na(.)][1])), only remove NA
# A tibble: 3 x 4
        date     x     y     z
      <date> <int> <int> <int>
1 1990-01-01     1     4     3
2 1990-01-02     2     2     6
3 1990-01-03     5     3     4
0 голосов
/ 31 мая 2018

Вы могли бы сделать это ...

library(dplyr)

df %>% 
  mutate(date=as.Date(date)) %>% 
  group_by(date) %>% 
  summarize_all(~sum(.,na.rm=TRUE))

  date           x     y     z
  <date>     <int> <int> <int>
1 1990-01-01     1     4     3
2 1990-01-02     2     2     6
3 1990-01-03     5     3     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...