首页 > 解决方案 > 对时间文本数据进行分类的最佳方法是什么?

问题描述

这是一个直截了当的问题:

我有时间文本数据,如下所示:

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

标签: rmachine-learningtext-classification

解决方案


很难说这会在哪里中断,但也许它会给你一些想法:

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

推荐阅读