【发布时间】:2021-12-24 16:08:56
【问题描述】:
我想编写一个函数,将“time_spent”列中的字符向量转换为分钟的数值向量。
#Import libraries
library(tidyr)
library(dplyr)
library(lubridate)
#Create dataframe
df <- data.frame(country = c("Russia", "China", "USA"),
time_spent = c("0:10", "1:20", "2:36"))
#Convert "time_spent" from factor to character
df$time_spent <- lapply(df$time_spent, as.character)
我可以用下面的代码做到这一点,但我想学习如何把它写成一个函数。
df %>%
mutate(minutes = paste(time_spent, "00", sep = ":"),
minutes = hms(minutes),
minutes = hour(minutes)*60 + minute(minutes))
我知道我已经破坏了这个函数及其应用程序,但我不知道如何让它工作。
#Function to convert "time_spent" vector into minutes
convert_to_minutes <- function(x) {
df$x = paste(x, "00", sep = ":") %>%
df$x = hms(x) %>%
df$x = hour(x)*60 + minute(x)
}
#Apply function
df %>%
convert_to_minutes(df$time_spent)
相关问题2
如何使用map 将我的convert_to_minutes 函数应用于多个time_spent 向量,如下面的数据帧中所示?
df2 <- data.frame(country = c("Russia", "China", "USA"),
time_spent = c("0:10", "1:20", "2:36"),
time_spent2 = c("0:15", "0:12", "1:47"),
time_spent3 = c("0:25", "3:45", "0:18"))
【问题讨论】:
-
所以
"1:20"是"HH:MM"? -
是的,没错。