R:如何将min(字符串)转换为int
如何将同时包含分钟和小时的列转换为描述分钟的int,就像使用 df$持续时间=[“1小时10分钟”,“120分钟”,…] 到 df$持续时间=[70120,…]R:如何将min(字符串)转换为int,r,data-conversion,R,Data Conversion,如何将同时包含分钟和小时的列转换为描述分钟的int,就像使用 df$持续时间=[“1小时10分钟”,“120分钟”,…] 到 df$持续时间=[70120,…] result ------ 70 120 这里有一个选择: library(stringr) d = c("1 h 10 min", "120 min", "2 h", "12 h 53 min") na_to_0 = function(x) {x[is.na(x)] = 0; x} to_minutes = function(
result
------
70
120
这里有一个选择:
library(stringr)
d = c("1 h 10 min", "120 min", "2 h", "12 h 53 min")
na_to_0 = function(x) {x[is.na(x)] = 0; x}
to_minutes = function(s) {
hr = na_to_0(60 * as.numeric(str_replace(str_extract(s, "[0-9]{1,2} h"), " h", "")))
min = na_to_0(as.numeric(str_replace(str_extract(s, "[0-9]{1,3} min"), " min", "")))
hr + min
}
to_minutes(d)
[1] 70 120 773
这里有一个选择:
library(stringr)
d = c("1 h 10 min", "120 min", "2 h", "12 h 53 min")
na_to_0 = function(x) {x[is.na(x)] = 0; x}
to_minutes = function(s) {
hr = na_to_0(60 * as.numeric(str_replace(str_extract(s, "[0-9]{1,2} h"), " h", "")))
min = na_to_0(as.numeric(str_replace(str_extract(s, "[0-9]{1,3} min"), " min", "")))
hr + min
}
to_minutes(d)
[1] 70 120 773
使用
lubridate
包,但需要通过将所有值转换为一致的格式来稍微清理数据
> df <- data.frame(duration=c("1 h 10 min","120 min"), stringsAsFactors = F)
> no_h<-!grepl("h", df$duration)
> df$duration[no_h] <- paste("0 h", df$duration[no_h])
> df$period <-hm(df$duration)
> df$minute <- hour(df$period)*60 + minute(df$period)
> df
duration period minute
1 1 h 10 min 1H 10M 0S 70
2 0 h 120 min 120M 0S 120
>
>df no_h df$持续时间[no_h]df$期间df$分钟df
持续时间分钟
1小时10分钟1小时10分钟70
20小时120分钟120米0秒120
>
使用lubridate
软件包,但您需要通过将所有值转换为一致的格式来稍微清理数据
> df <- data.frame(duration=c("1 h 10 min","120 min"), stringsAsFactors = F)
> no_h<-!grepl("h", df$duration)
> df$duration[no_h] <- paste("0 h", df$duration[no_h])
> df$period <-hm(df$duration)
> df$minute <- hour(df$period)*60 + minute(df$period)
> df
duration period minute
1 1 h 10 min 1H 10M 0S 70
2 0 h 120 min 120M 0S 120
>
>df no_h df$持续时间[no_h]df$期间df$分钟df
持续时间分钟
1小时10分钟1小时10分钟70
20小时120分钟120米0秒120
>