r - 根据另一列更改列值,但仅适用于第一列和第二列 (R) 中的某些条件
问题描述
我有一个数据框。
city <- as.character(c("London", "Unknown", "Birmingham", "Bristol", "Unknown", "Unknown", "Unknown", "Unknown"))
city_details <- as.character(c("London", "Camden", "Birmingham", "Outside London", "Camden Town", "Westminster", "London", "Birmingham"))
city_data <- data.frame(city, city_details)
尽管 city 列中的一些值是未知的,但查看 city_details 会发现其中大部分实际上都在伦敦。
所以,我可以替换其中的一些:
city_data$city[grepl("Camden|Westminster", city_data$city_details)] <- 'London'
但是,在 city_details 中显示“London”的情况会更困难,因为还有一个显示“Outside London”,所以我不想只选择其中包含“London”模式的任何内容.
为此,我不是在寻找一种只包含完全匹配的方法(因为这对于我的真实数据来说不太合适)。
所以我想做的只是对未知的城市值执行这种替换。
目前我已经尝试了以下方法,但显然逻辑不正确,因为它实际上所做的只是将 city 列中的所有未知值更改为 London。
city_data <- within(city_data, city[city == "Unknown"] <- (city[grepl("London", city_details)] <- 'London'))
任何人都可以帮忙吗?
解决方案
我假设您只想在city
未知时替换城市名称并city_details
提到“伦敦”。在这种情况下,您可以使用以下内容:
city_data$city[(as.numeric(grepl("Unknown", city)) + as.numeric(grepl("London", city_details))) == 2] <- "London"
这回答了你的问题了吗?
推荐阅读
- c++ - 从日志消息中去除静态文本并仅保存变量
- typescript - 检查是否有值,如果没有则不创建字段
- django - Filtering based on a foreign key in Django
- swift - 在不破坏撤消堆栈的情况下在 NSTextView 中附加文本
- python - Python类分层继承查询
- java - Android NotificationManager 不提醒用户
- python - Player does not stop at bottom edge of screen when using gravity in pygame tutorial
- gatsby - How to add local script file to gatsby
- r - R包学习器中有关“不可见”的消息
- authentication - 如何验证 WebSocket 连接