我有一個資料。但是假設該資料的值被新值覆寫/替換。分配規則也存盤在 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)
)
Tibble 包含有關分配規則的資訊:
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
但我相信有一種更優雅的方法可以做到這一點。特別是用于處理更大的資料。
我將衷心感謝您的幫助。
uj5u.com熱心網友回復:
使用命名向量進行匹配和重新編碼
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351296.html