这是一个直截了当的问题:
我有时间文本数据,如下所示:
110
120+
50分钟
50分钟
35-40
30
1小时半
1小时20分钟
清理数据以便分析的最佳方法是什么?这是机器学习的工作吗?如果是这样,在这种情况下对我最有帮助的库/工具是什么?
一个想法是使用gsub:
“ as.numeric(gsub(”([0-9] +)。* $“,” \ 1“,Timedata))””,但这样过分简化了数据。
我希望清理后的数据如下所示:
110
120
50
50
37.5
30
90
80
答案 0 :(得分:0)
很难说这将在哪里中断,但是也许它可以给您一些想法:
library(tidyverse)
times <- c("110", "120+", "50 minutes", "50 Minutes",
"35-40", "30", "1 hour and a half", "1 hour 20 Minutes")
times %>%
str_replace("..hour", "60") %>%
str_replace("half", "30") %>%
str_split("\\-") %>%
map(~ ifelse(length(.) > 1, mean(as.numeric(.)), .)) %>%
map(~ ifelse(is.character(.), str_extract_all(., "[[:digit:]]+"), .)) %>%
flatten() %>%
map_dbl(~ ifelse(is.character(.), sum(as.numeric(.)), .))
#> [1] 110.0 120.0 50.0 50.0 37.5 30.0 90.0 80.0