我很抱歉,如果这非常简单且平庸,但是我似乎无法创建一个将时间变量(00:00:00)转换为数字并创建新列以将结果放入的函数。
我可以将时间转换成数字,但我无法完成“新列”部分。任何帮助表示赞赏。
Time <- function(x) {
begin <- x$avg..wait.time
x$Num.wait.time <- as.numeric(as.POSIXct(strptime(begin, "%H:%M:%S")))
}
(注意:avg..wait.time
是时间单元,
Num.wait.time
是我要创建的新变量/列)
答案 0 :(得分:1)
如果您的目的不是自己编写函数,则可以使用dplyr
直接解决现有轮子的问题,而不必编写单独的函数。
library(dplyr)
df <- data.frame(avg.wait.time = c("01:02:03", "03:02:01"))
df <- df %>%
dplyr::mutate(
avg.wait.numeric = as.numeric(as.POSIXct(strptime(avg.wait.time, "%H:%M:%S")))
)
如果您想编写一个单独的函数,我将执行以下操作:
Time <- function(x,
input_var = "avg.wait.time",
output_var = "avg.wait.numeric") {
x[[output_var]] <-
as.numeric(as.POSIXct(strptime(x[[input_var]], "%H:%M:%S")))
return(x)
}
这允许指定输入变量名和输出变量名,当前设置有一些任意的默认值(当然,您可以将它们踢掉)。