如何使用包含日期时间和区域的列删除R中的重复时间戳

时间:2018-06-12 17:54:11

标签: r date time zone

我在R中有一个包含多个列的数据框。我复制粘贴下面的一列。列类型在数据框中是整数,+ 00.00表示UTC时间。

D-T-Z                               

06/04/2018 16:30:01 +00:00              
06/05/2018 20:15:00 +00:00              
06/05/2018 12:45:34 +00:00              
06/05/2018 20:15:00 +00:00

当我使用库(doBy)和命令Mach1 [firstobs(Mach1 [,16]),]时。我得到了下面的结果

  D-T-Z
06/04/2018 16:30:01 +00:00              
06/05/2018 20:15:00 +00:00              
06/05/2018 12:45:34 +00:00

我想过滤数据框并获取不同日期的单个记录。因为时间不同,它将返回06/05/2018的两条记录,而我只想要返回一条记录。什么时候归来都没关系。有没有其他方法可以实现这一目标?

如果数据框有两列,该怎么办?

date                                               Hour

1 2018-06-04 325.2 2 2018-06-05 329.5 3 2018-06-06 329.7 4 2018-06-07 329.9 5 2018-06-08 333.2 6 2018-06-13 356.0 7 2018-06-14 364.8 8 2018-06-15 372.6 9 2018-06-15 381.9 10 2018-06-21 383.3 11 2018-06-22 394.5

1 个答案:

答案 0 :(得分:0)

您可以使用lubridate

library(tidyverse)
library(lubridate)

data_frame(date = c("06/04/2018", "06/05/2018", "06/05/2018", "06/05/2018"), time = c("16:30:01", "20:15:00", "12:45:34", "20:15:00"), zone = c("+00:00", "+00:00", "+00:00", "+00:00")) -> x

# all data in one column
x %>% select(date) %>% unique()

# data in separate columns using lubridate
apply(x, 1, function(x) paste(x, collapse = " ")) %>% dmy_hms -> y
y %>% as_date() %>% data_frame() %>% unique()

输出1:

# A tibble: 2 x 1
  date      
  <chr>     
1 06/04/2018
2 06/05/2018

输出2:

# A tibble: 2 x 1
  .         
  <date>    
1 2018-04-06
2 2018-05-06