gpt4 book ai didi

R以分钟为单位转换小时分钟

转载 作者:行者123 更新时间:2023-12-01 12:25:46 25 4
gpt4 key购买 nike

我有一个数据集(名为 A),其列“TimeColumn”显示在快照中。我想完成以下任务:

Step1:对于min中的所有值,只提取数字

Step2:对于小时和分钟中的所有值,将其转换为分钟并仅提取结果数字

第 3 步:对于每一行,将提取的值添加到新列中

例如,如果条目是 119 分钟,我想提取 119。如果条目是 1 小时 30 分钟,我想提取 90。

我使用了以下代码,它成功地提取了数字。但是,当时间以 hr min 为单位时,它不会完成任务。例如。仅提取“1 小时 30 分钟”中的“1”,但未提取“30”。

for (num in seq(1,length(A$TimeColumn), by=1))  #replace 100 by nrow(A)
{
cat("Row number",num, "is",as.numeric(gsub("([0-9]+).*$", "\\1",A$TimeColumn[num] )))
cat("\n")
}

Column containing time in min or in hr min

最佳答案

我们可以使用 str_extract_all(来自 stringr)从“TimeColumn”中提取数字到一个 list 中,遍历 列出元素(sapply(...)),将其转换为'numeric'('x1'),if length 大于 1,然后执行算术将小时转换为分钟,或者 else 返回分钟,并将其分配给新列“Min”。

library(stringr)
A$Min <- sapply(str_extract_all(A$TimeColumn, "\\d+"), function(x) {
x1 <- as.numeric(x)
if(length(x1)>1) x1[1]*60 + x1[2] else x1 })
A$Min
#[1] 98 119 105 90 92 135 104 100 104 93

base R 选项是使用 sub 将 'h' 替换为 * 60 +,删除 'min' 子字符串,然后做个评价

unname(sapply(sub("\\s+min", "", sub("h", "* 60 +", A$TimeColumn)), 
function(x) eval(parse(text=x))))
#[1] 98 119 105 90 92 135 104 100 104 93

数据

A <- structure(list(TimeColumn = c("98 min", "119 min", "105 min", 
"1h 30 min", "92 min", "135 min", "104 min", "100 min", "104 min",
"93 min")), .Names = "TimeColumn", row.names = c(NA, -10L),
class = "data.frame")

关于R以分钟为单位转换小时分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39940286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com