R语言:筛选minimum_nights>90后提取非UK区域的host_location值
在R语言中提取host_location不属于UK的记录
完全可行,你可以在已处理的数据集基础上,通过筛选条件轻松提取host_location列中不属于"UK"的记录或值。以下是两种常用实现方式:
方法1:使用dplyr(tidyverse工具链)
假设你之前用tidyverse完成了数据预处理,后续只需添加筛选步骤即可:
library(dplyr) # 先执行你已有的预处理操作 airbnb_processed <- airbnb1 %>% select(host_location, minimum_nights, revenue) %>% filter(minimum_nights > 90) %>% mutate(host_location = ifelse(is.na(host_location), "unknown", host_location)) # 提取host_location不为"UK"的完整记录 airbnb_non_uk <- airbnb_processed %>% filter(host_location != "UK") # 如果只需要提取host_location列的非UK值 non_uk_locations <- airbnb_processed %>% filter(host_location != "UK") %>% pull(host_location)
方法2:使用基础R语法
如果你习惯用基础R操作,代码如下:
# 基础R版的预处理操作 airbnb_processed_base <- airbnb1[, c("host_location", "minimum_nights", "revenue")] airbnb_processed_base <- airbnb_processed_base[airbnb_processed_base$minimum_nights > 90, ] airbnb_processed_base$host_location[is.na(airbnb_processed_base$host_location)] <- "unknown" # 提取非UK的完整记录 airbnb_non_uk_base <- airbnb_processed_base[airbnb_processed_base$host_location != "UK", ] # 单独提取host_location列的非UK值 non_uk_locations_base <- airbnb_processed_base$host_location[airbnb_processed_base$host_location != "UK"]
额外提示:灵活匹配场景
如果host_location里存在"United Kingdom"、"GB"等其他指代英国的表述,可通过正则匹配来排除这类记录:
# 忽略大小写,排除包含UK或United Kingdom的位置 airbnb_non_uk_flexible <- airbnb_processed %>% filter(!grepl("UK|United Kingdom", host_location, ignore.case = TRUE))
内容的提问来源于stack exchange,提问作者Jay Prakash
相关产品推荐
相关产品推荐

