R中的多个字符串匹配可能性条件

时间:2016-02-23 03:15:06

标签: r

我有一个名为Country的变量,我想创建一个Country等于澳大利亚和希腊的子集。在这种情况下,我试图这样做并失败。

CUTdata <- subset(NEWdata, Country == c('Australia','Greece'))

这不起作用。实现这种逻辑的另一种方法是什么?

3 个答案:

答案 0 :(得分:2)

使用grep。就像在Unix中一样。您也可以忽略大小写并进行部分匹配。

CUTdata <- grep( 'Australia|Greece' , NEWdata, value = T, ignore.case = T)

答案 1 :(得分:0)

....或者使用sqldf包:)

library(sqldf)
sqldf("select * from Newdata where Country in ('Australia' ,'Greece')")

答案 2 :(得分:0)

以下是使用data.table的选项。我们将'data.frame'转换为'data.table',将set键列转换为'Country',并将数据集中的行的子集归为'Country'为'Australia'或'Greece'。< / p>

setDT(NEWdata, key='Country')[c('Australia', 'Greece')]
#     Country       value
#1: Australia  0.59826911
#2: Australia -0.08554095
#3: Australia  0.11953107
#4: Australia -0.94382724
#5:    Greece -1.31690812
#6:    Greece -0.33498679
#7:    Greece  0.51633570
#8:    Greece -0.60515695
#9:    Greece -0.64859151

数据

set.seed(24)
NEWdata <- data.frame(Country = sample(c("Australia", 
  "Greece", "USA", "UK"), 20, replace=TRUE), value=rnorm(20))