R:多准则过滤器的子集

R:多准则过滤器的子集,r,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转换成一个向量。。但我不知道该怎么做

我有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)
但这给了我错误

另外,如果你们能给我一个方法,使这个不区分大小写,这样“圣何塞”和“圣何塞”加在一起,那就更好了

如果我使用“toupper/tolower”,我会得到错误:
无效的多字节


提前谢谢

这里还有一些方法

R代码: 输出:
希望这能有所帮助。

df2
可能是一个
数据帧(?),您不能按数据帧进行筛选,您需要选择正确的列,例如,
df2$V1
。您还应该在%
中使用
%,而不是
=
,以便与多个值进行比较。关于第二个问题,请看一下
tolower
toupper
@DavidArenburg,太棒了!成功了!谢谢:)
# 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