如何在R中的数据帧上同时使用`grep`和`which`?

时间:2016-11-30 21:35:56

标签: r dataframe grep

我有一个搜索使用which,另一个搜索使用grep,如下所示:

dates <- myframe[grepl(abreviation,myframe$geo),"date"]
dates <- c(dates, myframe[which(myframe$geo == fullname),"date"])

abreviationfullname是两个不同的字符串。

我尝试使用返回0条目的|。我也尝试了endsWith,但是这返回了警告,只有顶级结果才会被使用,而且列表只有一个结果。

我遇到的问题是它没有以字符串格式返回日期,这是date,而是数字整数。

我需要做些什么才能获得这些日期的向量

编辑:这是一个示例数据集 -

pastebin.com/yXq6khNV

2 个答案:

答案 0 :(得分:1)

which输出一个整数向量,而grepl输出一个布尔值。要让它们匹配并协同工作,请在没有which调用的情况下进行尝试。您还需要整理NA列中的geo个{我还将您的fullname更改为&#34;纽约,纽约&#34;自&#34;纽约,USA&#34;没有出现在你的表中):

dates <- myframe[ !is.na( myframe$geo ) & 
                      ( grepl(abbreviation,myframe$geo) | myframe$geo == fullname ), 
                  "date" ]

哪个给出(tibble格式是因为我使用readr来读取数据集):

> dates
# A tibble: 1 × 1
               date
              <chr>
1 12/30/10 02:37 PM

如果由于某种原因您在途中丢失了格式,您可以指定它,虽然它不是Date格式,所以我只指定{{1这里:

character

答案 1 :(得分:0)

我通过将已经过滤的数据框传递给grepl来解决了这个问题:

dates <- myframe[grepl(abreviation,myframe[which(myframe$geo == fullname),]),"date"]