创建函数以创建新列

时间:2018-07-27 01:06:03

标签: r function

我很抱歉,如果这非常简单且平庸,但是我似乎无法创建一个将时间变量(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是我要创建的新变量/列)

1 个答案:

答案 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)
}

这允许指定输入变量名和输出变量名,当前设置有一些任意的默认值(当然,您可以将它们踢掉)。