![](/img/trans.png)
[英]How do I replace values across multiple columns in a data-frame with values from a second column, based on a match with a third column using R?
[英]Replace Values in Dataframe Column based on match in second data frame columns
我已經在Stack Overflow上看到了六種左右的解決方案,但是,所有解決方案都使用“內”來處理單個數據幀中的匹配。 我需要一個跨多個數據框的解決方案:
我在數據框1的一列中有值
DF1$A
:“DF1$A
等。”
我還有第二個數據框,其中包含這些代碼的“鍵”
DF2$A
:“ 1、2、3、4、5、6、7、8、9、10”
DF2$B
:“餡餅,比薩餅,漢堡包等”
如何更改DF1$A
中的值以匹配DF2$B
中的值?
您可以使用match
作為指向df2$B
特定位置的指針來執行此操作:
# make some toy data
set.seed(1)
df1 <- data.frame(A = sample(seq(3), 10, replace = TRUE))
df2 <- data.frame(A = seq(3), B = c("pizza", "hot dog", "hamburger"), stringsAsFactors = FALSE)
df1$B <- df2$B[match(df1$A, df2$A)]
結果:
> df1
A B
1 3 hamburger
2 1 pizza
3 2 hot dog
4 1 pizza
5 1 pizza
6 2 hot dog
7 1 pizza
8 2 hot dog
9 3 hamburger
10 2 hot dog
您可以使用基本merge
按索引dplyr
,然后從dplyr
select
子集並重命名:
library(tidyverse)
DF1 <- DF1 %>%
merge(DF2, by = "A") %>%
select(-A, A = B)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.