将时间数据帧转换为数字数据
Converting time data frame to numeric data
我有一个时间格式的数据框。我需要将其更改为数字数据。
我使用了以下格式,但我不确定它是否正确,因为值以数字格式更改。
Photoperiod
08:52:41
08:53:35
08:54:33
08:55:36
08:56:44
08:57:55
08:59:11
09:00:31
09:01:55
09:03:23
09:04:55
09:06:31
09:08:10
09:09:53
09:11:40
DF<- read.csv2(file="DF.csv")
DF.a <-as.POSIXct(DF, format = "%H:%M:%S")
library(data.table)
DF.B<- lapply(DF.a , function(x) as.numeric(as.ITime(x)) / 3600)
昨天在 SO in portuguese 中提出了一个(非常)类似的问题。 Marcus Nunes 的回答可能会给你想要的。
注意他调用函数HoraDecimal
,葡萄牙语为'DecimalHour'。
HoraDecimal <- function(x){
sum(unlist(lapply(strsplit(x, split=":"), as.numeric)) * c(1, 1/60, 1/3600))
}
x <- "02:20:00"
HoraDecimal(x)
[1] 2.333333
y <- "00:50:00"
HoraDecimal(y)
[1] 0.8333333
z <- "3:30:30"
HoraDecimal(z)
[1] 3.508333
我在评论部分提出了建议,使用 sapply
而不是 unlist(lapply(...))
。下面是这样一个版本。名称已更改为英文。
DecimalHour <- function(x){
sum(sapply(strsplit(x, split=":"), as.numeric) * c(1, 1/60, 1/3600))
}
DecimalHour(x)
DecimalHour(y)
DecimalHour(z)
转换方法是一样的,还是Marcus的功能,如果觉得有用,功劳归他。
我有一个时间格式的数据框。我需要将其更改为数字数据。 我使用了以下格式,但我不确定它是否正确,因为值以数字格式更改。
Photoperiod
08:52:41
08:53:35
08:54:33
08:55:36
08:56:44
08:57:55
08:59:11
09:00:31
09:01:55
09:03:23
09:04:55
09:06:31
09:08:10
09:09:53
09:11:40
DF<- read.csv2(file="DF.csv")
DF.a <-as.POSIXct(DF, format = "%H:%M:%S")
library(data.table)
DF.B<- lapply(DF.a , function(x) as.numeric(as.ITime(x)) / 3600)
昨天在 SO in portuguese 中提出了一个(非常)类似的问题。 Marcus Nunes 的回答可能会给你想要的。
注意他调用函数HoraDecimal
,葡萄牙语为'DecimalHour'。
HoraDecimal <- function(x){
sum(unlist(lapply(strsplit(x, split=":"), as.numeric)) * c(1, 1/60, 1/3600))
}
x <- "02:20:00"
HoraDecimal(x)
[1] 2.333333
y <- "00:50:00"
HoraDecimal(y)
[1] 0.8333333
z <- "3:30:30"
HoraDecimal(z)
[1] 3.508333
我在评论部分提出了建议,使用 sapply
而不是 unlist(lapply(...))
。下面是这样一个版本。名称已更改为英文。
DecimalHour <- function(x){
sum(sapply(strsplit(x, split=":"), as.numeric) * c(1, 1/60, 1/3600))
}
DecimalHour(x)
DecimalHour(y)
DecimalHour(z)
转换方法是一样的,还是Marcus的功能,如果觉得有用,功劳归他。