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