【问题标题】:R, padr adding missing rows based on column contentR,padr根据列内容添加缺失的行
【发布时间】:2018-03-06 07:35:39
【问题描述】:

我正在使用 padr 作为数据框的日期填充。它添加了行,但我怎样才能巧妙地添加它们?

希望按人员和 date_time 对数据框进行排序,然后在中间为人员添加缺失的行。 (2个不同工作人员之间的缺失不被视为缺失)

这是数据框的样子和期望。

我尝试对原始数据进行排序,但似乎对最终结果没有帮助。我怎样才能完成它?谢谢。

df_sorted <- df[with(df, order(staff, date_time)), ]

代码:

date_time <- c("02/03/2018 00:00","02/03/2018 01:00","02/03/2018 02:00","02/03/2018 03:00","02/03/2018 05:00","02/03/2018 06:00","02/03/2018 07:00","02/03/2018 08:00","02/03/2018 09:00","02/03/2018 10:00","02/03/2018 11:00","02/03/2018 12:00","02/03/2018 13:00","02/03/2018 14:00","02/03/2018 16:00","02/03/2018 17:00","02/03/2018 18:00","02/03/2018 19:00","02/03/2018 21:00","02/03/2018 22:00","02/03/2018 23:00","03/03/2018 00:00","03/03/2018 01:00","03/03/2018 02:00","03/03/2018 04:00","03/03/2018 05:00","03/03/2018 07:00","03/03/2018 08:00","03/03/2018 09:00","03/03/2018 11:00","03/03/2018 12:00","03/03/2018 14:00","03/03/2018 15:00","03/03/2018 17:00","03/03/2018 18:00","03/03/2018 20:00","03/03/2018 22:00","03/03/2018 23:00","04/03/2018 00:00","04/03/2018 01:00","04/03/2018 02:00","04/03/2018 03:00","04/03/2018 05:00","04/03/2018 06:00","04/03/2018 07:00","04/03/2018 08:00","04/03/2018 10:00","04/03/2018 11:00","04/03/2018 12:00","04/03/2018 14:00","04/03/2018 15:00","04/03/2018 16:00","04/03/2018 17:00","04/03/2018 19:00","04/03/2018 20:00","04/03/2018 22:00","04/03/2018 23:00")
staff <- c("Jack","Jack","Kate","Jack","Jack","Jack","Jack","Jack","Jack","Jack","Jack","Jack","Kate","Jack","Jack","Jack","David","David","Jack","Kate","David","David","David","David","David","David","David","David","David","David","David","David","David","David","David","David","Jack","Kate","David","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Jack")
reading <- c("7.5","8.3","7","6.9","7.1","8.1","8.4","8.8","6","7.1","8.9","7.3","7.4","6.9","11.3","18.8","4.6","6.7","7.7","7.8","7","6.6","6.8","6.7","6.1","7.1","6.3","7.2","6","5.8","6.6","6.5","6.4","7.2","8.4","6.5","6.5","5.5","6.7","7.5","6.5","7.5","7.2","6.3","7.3","8","7","8.2","6.5","6.8","7.5","7","6.1","5.7","6.7","4.3","6.3")
df <- data.frame(date_time, staff, reading)

write.csv(df, "df.csv", row.names = FALSE)

library(padr)
df$date_time<-as.POSIXct(df$date_time,format="%d/%m/%Y %H:%M")
ddf <- pad(df)

write.csv(ddf, "ddf.csv", row.names = FALSE)

【问题讨论】:

    标签: r timestamp time-series missing-data padr


    【解决方案1】:

    我认为这将为您提供所需的输出。

    library(dplyr)
    library(padr)
    library(lubridate)
    df %>% 
     mutate(date_time = dmy_hm(date_time)) %>% 
     pad(., interval = "hour", group = 'staff')
    # A tibble: 172 x 3
    # Groups:   staff [3]
    #  date_time           staff reading
    #  <dttm>              <fct> <fct>  
    #1 2018-03-02 18:00:00 David 4.6    
    #2 2018-03-02 19:00:00 David 6.7    
    #3 2018-03-02 20:00:00 David <NA>   
    #4 2018-03-02 21:00:00 David <NA>   
    #5 2018-03-02 22:00:00 David <NA>   
    #6 2018-03-02 23:00:00 David 7      
    #7 2018-03-03 00:00:00 David 6.6    
    #8 2018-03-03 01:00:00 David 6.8    
    #9 2018-03-03 02:00:00 David 6.7    
    #10 2018-03-03 03:00:00 David <NA>   
    # ... with 162 more rows
    

    关键是工作人员group。希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 2017-11-09
      • 2015-02-06
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多