【发布时间】:2018-03-14 19:55:21
【问题描述】:
我正在清理一个包含各种奇怪命名约定的表。我经常看到的名字之一是一串日期。其中一些名称包含可以使用的数字,但我想从字符串中删除日期格式。
编辑 - 日期采用 mm/YY 或 mm/YYYY 格式。正如我所见,日期通常是从 2017 年开始(我们需要更多最新更新)。
例如:
names <- c('IT Company 09/18', 'Tech Company 9/17', '9/2018 XYZ Company', '50/50 Phone Company')
应该是:
c('IT Company', 'Tech Company', 'XYZ Company', '50/50 Phone Company')
我在这里尝试使用此函数来标记带有“/”和日期的字符串,但它也会提取不是日期的数字:
names2 <- names[grepl("[[:digit:]]", names) & grepl("/", names)]
输出
> names2
[1] "IT Company 09/18"
[2] "Tech Company 9/17"
[3] "9/2018 XYZ Company"
[4] "50/50 Phone Company"
是否可以使用特定的日期表达式代替 [[:digit:]] 来查找带日期的字符串?
另外,从字符串中删除包含斜线的日期的函数是什么?
【问题讨论】:
-
您希望哪些日期被视为日期/非日期? 10/10 是约会吗?在此示例中,您可以只包含
& !grepl("50/50", names) -
我看到的日期是 mm/YY 或 mm/YYYY 格式。 10/10 不是日期,因为它是 dd/mm 格式。大约有 10 万条记录,我一直将“50/50 电话公司”之类的名称放入例外列表中。
-
10/10 可能是 mm/YY
-
你是对的。对于本练习,我们需要从 2017 年开始的最近日期。数据是最新的。我将编辑我的问题。
标签: r