r - 根据时间计数将时间列添加到数据框
r - Adding time column to data frame based on time count
在我的数据中,有一列温度测量值和一列显示数据记录器测量温度之前经过的时间。
数据框包含 500000 多个观察值。
eggtemp <- read.csv("temp_time.csv", header=FALSE)
colnames(eggtemp) <- c("time passed", "temp")
time passed temp
1 0.00043823 16.876
2 0.00087645 17.903
3 0.00131470 18.923
4 0.00175290 19.933
数据记录器于 2014 年 7 月 30 日开始记录,13:05:00。
有没有办法根据开始记录时间在数据集中创建一个新列,显示进行测量的确切时间?
像这个(前 4 行我手写了大概的时间):
time passed temp time
1 0.00043823 16.876 13:05:00:00
2 0.00087645 17.903 13:05:00:04
3 0.00131470 18.923 13:05:00:09
4 0.00175290 19.933 13:05:00:13
有人可以告诉我是否有一个函数可以获取开始时间并添加 "time passed" 值,以获得每次观察的确切时间(和日期)?我只是想不通..
谢谢!
当然有一些方法可以用 strptime
等方法来完成这个,但我发现 lubridate
包有助于在处理时间时保持头脑清醒:
library(lubridate)
df
# time_passed temp
# 1 0.00043823 16.876
# 2 0.00087645 17.903
# 3 0.00131470 18.923
# 4 0.00175290 19.933
options(digits.secs = 3) # to see the milliseconds
start <- ymd_hms("2014-07-30 13:05:00.00")
df$time <- start + milliseconds(df$time_passed * 10000)
df
# time_passed temp time
# 1 0.00043823 16.876 2014-07-30 13:05:00.004
# 2 0.00087645 17.903 2014-07-30 13:05:00.008
# 3 0.00131470 18.923 2014-07-30 13:05:00.013
# 4 0.00175290 19.933 2014-07-30 13:05:00.017
你没有提到 eggtemp[,'time passed']
的单位,但我根据你输入的值猜测小时数。我使用 lubridate 包,它使这些计算变得容易。尽管使用 base R.
绝对有可能
start <- mdy_hms("7/30/2014 13:05:00")
time_passed <- c(0.00043823, 0.00087645, 0.00131470, 0.00175290)
time_passed <- dhours(time_passed)
time <- start + time_passed
如果您担心将其设置为正确的本地时间,请确保将 tz 参数设置为 mdy_hms
。
在我的数据中,有一列温度测量值和一列显示数据记录器测量温度之前经过的时间。 数据框包含 500000 多个观察值。
eggtemp <- read.csv("temp_time.csv", header=FALSE)
colnames(eggtemp) <- c("time passed", "temp")
time passed temp
1 0.00043823 16.876
2 0.00087645 17.903
3 0.00131470 18.923
4 0.00175290 19.933
数据记录器于 2014 年 7 月 30 日开始记录,13:05:00。
有没有办法根据开始记录时间在数据集中创建一个新列,显示进行测量的确切时间? 像这个(前 4 行我手写了大概的时间):
time passed temp time
1 0.00043823 16.876 13:05:00:00
2 0.00087645 17.903 13:05:00:04
3 0.00131470 18.923 13:05:00:09
4 0.00175290 19.933 13:05:00:13
有人可以告诉我是否有一个函数可以获取开始时间并添加 "time passed" 值,以获得每次观察的确切时间(和日期)?我只是想不通..
谢谢!
当然有一些方法可以用 strptime
等方法来完成这个,但我发现 lubridate
包有助于在处理时间时保持头脑清醒:
library(lubridate)
df
# time_passed temp
# 1 0.00043823 16.876
# 2 0.00087645 17.903
# 3 0.00131470 18.923
# 4 0.00175290 19.933
options(digits.secs = 3) # to see the milliseconds
start <- ymd_hms("2014-07-30 13:05:00.00")
df$time <- start + milliseconds(df$time_passed * 10000)
df
# time_passed temp time
# 1 0.00043823 16.876 2014-07-30 13:05:00.004
# 2 0.00087645 17.903 2014-07-30 13:05:00.008
# 3 0.00131470 18.923 2014-07-30 13:05:00.013
# 4 0.00175290 19.933 2014-07-30 13:05:00.017
你没有提到 eggtemp[,'time passed']
的单位,但我根据你输入的值猜测小时数。我使用 lubridate 包,它使这些计算变得容易。尽管使用 base R.
start <- mdy_hms("7/30/2014 13:05:00")
time_passed <- c(0.00043823, 0.00087645, 0.00131470, 0.00175290)
time_passed <- dhours(time_passed)
time <- start + time_passed
如果您担心将其设置为正确的本地时间,请确保将 tz 参数设置为 mdy_hms
。