r - 当分配规则存储在另一个tibble中时,如何用新值替换tibble中的数据?
问题描述
我有数据。但是假设该数据的值被新值覆盖/替换。分配规则也存储在 tibble 中。数据标题:
library(tidyverse)
old_data <- tibble(
var1 = c(2,2,5,4,9,7,8,9,2),
var2 = c(9,2,7,5,5,8,4,9,9)
)
包含有关分配规则的信息的小标题:
assignment_rule <- tibble(
new = c(1,2,3,4,5,6),
old = c(2,4,5,7,8,9)
)
我知道我可以通过将每个旧号码分别分配给它的新号码来解决这个例子,例如:
new_data <- old_data
new_data[new_data == 2] <- 1
new_data[new_data == 4] <- 2
new_data[new_data == 5] <- 3
new_data[new_data == 7] <- 4
new_data[new_data == 8] <- 5
new_data[new_data == 9] <- 6
但我确信有一种更优雅的方法可以做到这一点。特别是对于处理更大的数据。
我将衷心感谢您的帮助。
解决方案
使用命名向量进行匹配和重新编码
library(dplyr)
library(tibble)
new_data <- old_data %>%
mutate(across(everything(),
~deframe(assignment_rule[2:1])[as.character(.)]))
-输出
new_data
# A tibble: 9 × 2
var1 var2
<dbl> <dbl>
1 1 6
2 1 1
3 3 4
4 2 3
5 6 3
6 4 5
7 5 2
8 6 6
9 1 6
推荐阅读
- javascript - 不和谐机器人发送的图像不会加载
- javascript - 将对象数组转换为对象数组
- android - 在android上显示圆形进度条(实心圆圈)
- html - 'display:flex' 在 DIV 上,内部 SVG 不显示在 iPhone 上,适用于显示块
- python - 在python,sqlite3中更有效地将一个数据库表中的数据与另一个数据库表进行比较
- security - AzureDevOps YAML 管道 - 防止恶意使用生产服务连接
- javascript - NodeJS 中的导入导出调用顺序
- java - KeyBinding multiple keys pressed not working
- python - 使用 SHAP 解释 DNN 模型,但我的 summary_plot 仅显示每个特征的平均影响,并不包括所有特征
- wikipedia - 如何获取特定类别和等级的随机维基百科文章?