Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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从文本中删除日期和所有垃圾_R_Regex_Text_Data Cleaning_Gsub - Fatal编程技术网

使用R从文本中删除日期和所有垃圾

使用R从文本中删除日期和所有垃圾,r,regex,text,data-cleaning,gsub,R,Regex,Text,Data Cleaning,Gsub,我正在用R清理一个由成千上万个文本组成的巨大数据集。我知道正则表达式可以很方便地完成这项工作,但我在使用它方面很差。我仔细检查了一下,但找不到解决办法。这是我的虚拟数据: foo_data <- c("03 / 05 / 2016 Education is good: WO0001982", "04/02/2016 Health is a priority: WAI000553", "

我正在用R清理一个由成千上万个文本组成的巨大数据集。我知道正则表达式可以很方便地完成这项工作,但我在使用它方面很差。我仔细检查了一下,但找不到解决办法。这是我的虚拟数据:

foo_data <- c("03 / 05 / 2016 Education is good: WO0001982", 
              "04/02/2016 Health is a priority: WAI000553",
              "09/ 08/2016 Economy is bad: 2031CE8D", 
              ": : 21 / 05 / 13: Vehicle license is needed: DPH2790 ")

感谢您对stringr的任何帮助。

使用stringr,请尝试以下操作:

库(stringr)
图书馆(magrittr)
str\u remove\u all(foo\u数据,\\/\\\\d+\\\\:WO”)%>%
str_squish()
#>[1]“教育是好的”“健康是重中之重”
#>[3]“经济不好”“需要车辆牌照”
由(v2.0.0)于2021年4月22日创建

数据

foo_data <- c("03 / 05 / 2016 Education is good: WO0001982", "04/02/2016 Health is a priority: WO0002021",
              "09/ 08/2016 Economy is bad: WO001999", "09/08/ 2016 Vehicle license is needed: WO001050")
foo_data
foo_data[1]“教育是好的”“健康是重中之重”
#>[3]“经济不好”“需要车辆牌照”

由(v2.0.0)于2021-04-22年创建,我认为其特殊性如下:

首先,让我们删除日期字符串。我将假定
mm/dd/yyyy
dd/mm/yyyy
,其中前两个数字可以是1-2位,第三个总是4位。如果这是可变的,则可以将正则表达式更改为稍微宽松一点:


foo_data2提供的任何答案都能解决您的问题吗,William?嗨@r2evans,您的答案看起来不错。但是,您可以修改代码以处理符号未硬编码和日期格式不正确的情况。我修改了原问题以反映我的问题。谢谢。
gsub(“^[:]*|:”,“,”,gsub(\\d{1,2}\\s*/\\s*\\d{1,2}\\s*/\\s*\\\d{2}(\\d{2})“,”,foo_data))
谢谢@r2evans。在虚拟数据集中它看起来还可以,但是在大型数据集中,并不是所有的缩写都被删除了,尽管类似日期的字符串被删除了。诸如
“11D2013A”
“MLY3595”
“WAI004882”,“4Fun”
等缩写词未从
c(“教育,支持-11D2013A”,“MLY3595-母乳喂养”,“WAI004882”,“雪佛兰--4Fun识字和算术”)
中删除。预期结果应该是“教育、支持”、“母乳喂养”、NA、“识字和算术”
。任何帮助我都会感激的。我只能做我“知道”的事情。也许您可以添加更多的示例,清楚地传达差异并证明正则表达式中的过度选择。
foo_data <- c("03 / 05 / 2016 Education is good: WO0001982", "04/02/2016 Health is a priority: WO0002021",
              "09/ 08/2016 Economy is bad: WO001999", "09/08/ 2016 Vehicle license is needed: WO001050")