R:由多个标准过滤器子集

时间:2015-06-03 20:09:07

标签: r

我有df1:

City        Freq
Seattle      20
San Jose     10
SEATTLE       5
SAN JOSE     15
Miami        12

我使用table(df)

创建了此数据框

我有另一个df2:

City
San Jose 
Miami

如果df1中的城市值等于df2中的城市值,我想要子集df1。这个df2只是一个样本,所以我不能使用OR条件(" |")因为我有很多不同的标准。也许我可以将这个df2转换为矢量..但我不知道该怎么做。 as.vector()似乎不起作用。

我考虑过使用

subset(df1, City == df2)

但这给了我错误。

另外,如果你们能让我找到一种方法让这个案例不敏感,那么#34; San Jose"和#34;圣何塞"加在一起,这会更好!

如果我使用" toupper / tolower",我收到错误:invalid multibyte

提前致谢!!

1 个答案:

答案 0 :(得分:0)

以下是更多方法

R代码:

# Method 1: using dplyr package
library(dplyr)
filter(df1, tolower(df1$City) %in% tolower(df2$City))
df1 %>% filter(tolower(df1$City) %in% tolower(df2$City))

# Method 2: using which function
df1[ which( tolower(df1$City) %in% tolower(df2$City)) , ]

# Method 3:
df1[(tolower(df1$City) %in% tolower(df2$City)), ]

输出:

      City Freq
2 San Jose   10
4 SAN JOSE   15
5    Miami   12

希望这有帮助。