如何在 R 中的数据框上同时使用 `grep` 和 `which`?
How do use both `grep` and `which` on a data frame in R?
我有一个使用 which
的搜索,另一个使用 grep
的搜索,如下所示:
dates <- myframe[grepl(abreviation,myframe$geo),"date"]
dates <- c(dates, myframe[which(myframe$geo == fullname),"date"])
abreviation
和 fullname
是两个不同的字符串。
我尝试使用 |
返回了 0 个条目。我也尝试了 endsWith
,但这返回了警告,即只有最上面的结果将被使用,并且列表只有一个结果。
我遇到的问题是它没有返回字符串格式的日期,这是 date
的格式,而是一个整数。
我需要做哪些不同的事情来获取这些日期的向量
编辑:这是一个样本数据集-
pastebin.com/yXq6khNV
which
输出一个整数向量,而 grepl
输出一个布尔值。要让它们匹配并协同工作,请在不调用 which
的情况下尝试。您还需要整理 geo
列中的那些 NA
(我还将您的 fullname
更改为 "New York, NY",因为 "New York, USA" 没有出现在您的 table):
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
格式,所以我在这里只指定 character
:
dates <- myframe[ !is.na( myframe$geo ) &
( grepl(abbreviation,myframe$geo) | myframe$geo == fullname ),
as.character( "date" ) ]
我通过将已过滤的数据框传递给 grepl
:
解决了这个问题
dates <- myframe[grepl(abreviation,myframe[which(myframe$geo == fullname),]),"date"]
我有一个使用 which
的搜索,另一个使用 grep
的搜索,如下所示:
dates <- myframe[grepl(abreviation,myframe$geo),"date"]
dates <- c(dates, myframe[which(myframe$geo == fullname),"date"])
abreviation
和 fullname
是两个不同的字符串。
我尝试使用 |
返回了 0 个条目。我也尝试了 endsWith
,但这返回了警告,即只有最上面的结果将被使用,并且列表只有一个结果。
我遇到的问题是它没有返回字符串格式的日期,这是 date
的格式,而是一个整数。
我需要做哪些不同的事情来获取这些日期的向量
编辑:这是一个样本数据集-
pastebin.com/yXq6khNV
which
输出一个整数向量,而 grepl
输出一个布尔值。要让它们匹配并协同工作,请在不调用 which
的情况下尝试。您还需要整理 geo
列中的那些 NA
(我还将您的 fullname
更改为 "New York, NY",因为 "New York, USA" 没有出现在您的 table):
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
格式,所以我在这里只指定 character
:
dates <- myframe[ !is.na( myframe$geo ) &
( grepl(abbreviation,myframe$geo) | myframe$geo == fullname ),
as.character( "date" ) ]
我通过将已过滤的数据框传递给 grepl
:
dates <- myframe[grepl(abreviation,myframe[which(myframe$geo == fullname),]),"date"]