R:多个时间戳列合并到时间戳系列

时间:2018-06-06 09:57:37

标签: r timestamp posix

数据框包含几个TIMESTAMP列。

df_Result
  A B         Timestamp_ALL  C
1 A 1                <NA>   Dog
2 A 1 2018-05-04 00:18:45   Dog
3 A 1 2018-05-04 00:19:13   Dog
4 B 2 2018-05-04 00:19:41   Cat
5 B 2 2018-05-05 00:17:00   Cat
6 B 2 2018-05-05 00:18:43   Cat
7 C 3 2018-05-06 00:18:41 Mouse
8 C 3 2018-06-05 00:00:01 Mouse
9 C 3 2018-07-31 22:09:10 Mouse

合并TIMESTAMP列的结果需要看起来像

def calculateLicense(Date bd, int yr, int mon=0){
    use (groovy.time.TimeCategory) {
        Date licenseDate = bd + yr.years + mon.months
        println "License date:" + licenseDate.format('mm/dd/yyyy')
    }

如何在R优雅&amp;有效的方式? 万分感谢任何建议和想法!

1 个答案:

答案 0 :(得分:2)

以下是使用tidyverse

tidyr::gather解决方案
library(tidyverse)
df %>%
    gather(key, Timestamp_ALL, -A, -B, -C) %>%
    select(A, B, Timestamp_ALL, C, -key) %>%
    arrange(A, B)
#  A B       Timestamp_ALL     C
#1 A 1                <NA>   Dog
#2 A 1 2018-05-04 00:18:45   Dog
#3 A 1 2018-05-04 00:19:13   Dog
#4 B 2 2018-05-04 00:19:41   Cat
#5 B 2 2018-05-05 00:18:43   Cat
#6 B 2 2018-05-05 00:17:00   Cat
#7 C 3 2018-07-31 22:09:10 Mouse
#8 C 3 2018-06-05 00:00:01 Mouse
#9 C 3 2018-05-06 00:18:41 Mouse

说明:gatherdata.frame从宽转换为长,其余只是使用select选择相关列,并按A排序条目,然后{{1}与B