r - 在 R 中,当替换列不为空时,如何将一列中的值替换为另一列的值?
问题描述
我正在研究自动化 R 中的报告。我们要做的一件事是查看进入商店的客户并估计他们的年龄记录,即Estimate Age。我们被指示在报告中使用估计年龄作为年龄,以便所有各方都有一个年龄。如果我们能够记录某人的实际年龄,那么那个年龄就变成了年龄。大多数记录没有实际年龄值。对于确实具有实际年龄值的记录,我需要将估计年龄值替换为实际年龄值(只要它存在)。没有实际年龄的记录应保持不变。
我是一个新手,几个月来一直坚持这一步。向 stackoverflow 大神求个祝福。如果有帮助,请查看图片。
我已经尝试过:尝试了两种不同方法的几种变体,用实际年龄替换估计年龄,再次无济于事:
1)Age <- ifelse(is.null(MyReport$ActualAge), MyReport$ActualAge, MyReport$EstimatedAge)
View(MyReport) 2) 也是这样的,但我调整了很多,所以不完全像这样,我把它搞砸了
select <- is.null(MainReportload$ActualAge) < 0.01
df[select,MyReport$EstimatedAge] <- df[select, MyReport$ActualAge]
3)
if(is.null(MyReport$ActualAge)) {
MyReport$Age <- MyReport$EstimatedAge
} else {
MyReport$Age <- MyReport$ActualAge
}
MyReport$Age
View(MyReport)
8.6.19 基于大脑和最少 SQL 知识的替代方案,只需做一个 coalesce,coalesce 在 dplyr 库中可用。结果:与上述尝试相同的问题将继续研究。
解决方案
我不确定你为什么说这dplyr::coalesce
不起作用,这是一个简化的通用示例。如果您发布数据的可重现版本,我们可以提供更多帮助。合并的关键是它返回第一个非缺失值。所以coalesce(estimated_age, age) != coalesce(age, estimated_age)
# example data
df <- readr::read_csv("
age, estimated_age
12, 14
NA, 13
NA, NA
15, NA
")
# coalesce
df2 <- dplyr::mutate(df, new_age = dplyr::coalesce(age, estimated_age))
推荐阅读
- angular - Firebase Firestore - 限制用户可以创建的产品文档数量
- python - 安装本地/个人库,以便可以直接由 python 项目导入
- c - 输入一个字符后程序无故关闭
- excel - 如何在 Excel 中创建倒计时 7 天然后重置的函数
- android - 在 androidx 中弃用 OnActivityResult()
- sql - 如何连接三个表以避免无效标识符错误
- type-conversion - 将 byte[] 转换为 Video(mp4 或任何其他可播放格式)
- java - 如何在 JavaFX 中的两个连接实体中显示 TableView 中的数据?
- r - 如何通过 rmarkdown 自动将 networkD3::sankeyNetwork() 保存到静态图像中?
- listview - 更改 SharePoint Online 列表视图行为 spfx 定制器