R 从一列中拾取值会过滤另一列

R 从一列中拾取值会过滤另一列,r,dplyr,R,Dplyr,我正在处理一个大数据项目,在这个项目中,我想过滤一个专栏,使之不被另一个专栏突出显示 例如,我想展示房屋1,因此,我想将房屋1与其他城市房屋(而不是所有房屋)的其他值进行比较 table <- data.frame( house=paste("House", 1:15), category = c("Urban", "Rural", "Suburban") ) table # house c

我正在处理一个大数据项目,在这个项目中,我想过滤一个专栏,使之不被另一个专栏突出显示

例如,我想展示房屋1,因此,我想将房屋1与其他城市房屋(而不是所有房屋)的其他值进行比较

table <- data.frame(
  house=paste("House", 1:15),
  category = c("Urban", "Rural", "Suburban")
)
table
#       house category
# 1   House 1    Urban
# 2   House 2    Rural
# 3   House 3 Suburban
# 4   House 4    Urban
# 5   House 5    Rural
# 6   House 6 Suburban
# 7   House 7    Urban
# 8   House 8    Rural
# 9   House 9 Suburban
# 10 House 10    Urban
# 11 House 11    Rural
# 12 House 12 Suburban
# 13 House 13    Urban
# 14 House 14    Rural
# 15 House 15 Suburban
我希望输出像这样

#      house category
# 1  House 1    Urban
# 2  House 4    Urban
# 3  House 7    Urban
# 4 House 10    Urban
# 5 House 13    Urban
非常感谢您的建议。

试试看

table %>%
filter(category == "Urban")

请记住,您需要在
过滤器
语句中使用引号

也许您可以尝试下面的基本R代码

subset(df,category == category[house=="House1"])
dplyr
选项

df %>%
   filter(category == category[house == "House1"])

     house category
1   House1    Urban
3   House3    Urban
5   House5    Urban
12 House12    Urban
13 House13    Urban
14 House14    Urban
虚拟数据

df <- structure(list(house = c("House1", "House2", "House3", "House4", 
"House5", "House6", "House7", "House8", "House9", "House10",
"House11", "House12", "House13", "House14", "House15"), category = c("Urban", 
"Suburban", "Urban", "Rural", "Urban", "Suburban", "Suburban",
"Rural", "Rural", "Suburban", "Suburban", "Urban", "Urban", "Urban",
"Rural")), class = "data.frame", row.names = c(NA, -15L))

df使用dplyr,您可以执行以下操作

table %>%
  filter(category == filter(table, house=="House 1") %>% pull(category))

基本上,只需一个子查询即可找到1号房屋的类别。

您还可以使用
匹配
,它将返回第一个匹配的索引,您可以从中获得相应的
类别

subset(table, category == category[match('House 1', house)])

      house category
1   House 1    Urban
4   House 4    Urban
7   House 7    Urban
10 House 10    Urban
13 House 13    Urban
如果要使用
dplyr
,请使用与
过滤器相同的代码:

dplyr::filter(table, category == category[match('House 1', house)])

这就是我在寻找的答案!非常感谢你。
dplyr::filter(table, category == category[match('House 1', house)])