Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何将min(字符串)转换为int_R_Data Conversion - Fatal编程技术网

R:如何将min(字符串)转换为int

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(

如何将同时包含分钟和小时的列转换为描述分钟的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(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
>