更改列strptime()n数据帧r

时间:2015-03-05 15:03:07

标签: r

我有一个列,我已经使用as.date

更改为DATE
> test_subset$Date <- as.Date(test_subset$Date, "%d/%m/%Y")

下一列将数字数据保存为与相邻日期列对应的时间。我遇到的问题是它继续将当前日期插入此时间列 - 我指定列“TIME”

> test_subset[[2]] <- strptime(test_subset[[2]], "%H:%M:%S")

但结果会将当前日期附加到时间。

  1. 如何将“TIME”列调整为不包括当前日期。
  2. 如何从“TIME”栏中删除当前日期

1 个答案:

答案 0 :(得分:1)

正在插入日期,因为您正在使用strptime()。您可以使用format(),因为您不一定需要特殊课程。如果我们有一个示例向量x

x <- Sys.time() + 0:5
#[1] "2015-03-05 07:08:27 PST" "2015-03-05 07:08:28 PST"
#[3] "2015-03-05 07:08:29 PST" "2015-03-05 07:08:30 PST"
#[5] "2015-03-05 07:08:31 PST" "2015-03-05 07:08:32 PST"

要获取日期,您可以使用

as.Date(format(x, "%F"))
# [1] "2015-03-05" "2015-03-05" "2015-03-05" "2015-03-05"
# [5] "2015-03-05" "2015-03-05"

要获得时间,请再次使用format(),但使用%T

format(x, "%T")
# [1] "07:08:27" "07:08:28" "07:08:29" "07:08:30" "07:08:31"
# [6] "07:08:32"

如果事实证明你需要第二列的时间等级,你可以使用chron::times()来提供&#34;次&#34;类。

(time <- chron::times(format(x, "%T")))
# [1] 07:08:27 07:08:28 07:08:29 07:08:30 07:08:31 07:08:32
class(time)
# [1] "times"