[英]Adding column to a dataframe in R based on matching conditions in another dataframe
[英]Rename column value based on another matching dataframe in R
假设我们有三个数据框 dfa
姓名 | ID |
---|---|
杰克 | 1个 |
玫瑰 | 2个 |
dfb
ID | 工作 |
---|---|
A | 学生 |
b | 导师 |
dfc
基本的 | 列名 |
---|---|
A | 2个 |
b | 1个 |
如何使用 R 将 dfa id 列从 1,2 重命名为 b,a?
请帮我解决这个问题! 太感谢了!
一种dplyr
方法是像这样使用recode
:
library(dplyr)
dfa |>
mutate(id = recode(id, !!!setNames(dfc$primary, dfc$colname)))
#> name id
#> 1 jack b
#> 2 rose a
或者第二种选择是使用left_join
:
dfa |>
left_join(dfc, by = c("id" = "colname")) |>
select(name, id = primary)
#> name id
#> 1 jack b
#> 2 rose a
数据
dfa <- data.frame(
name = c("jack", "rose"),
id = c(1L, 2L)
)
dfc <- data.frame(
primary = c("a", "b"),
colname = c(2L, 1L)
)
我一直不明白这三个数据集之间的关系是否是这样的:dfa$id 等于 dfc$colname,dfc$primary 等于 dfb$id,但如果是这样,这里有一个可能的答案:
# Load the dataframes
dfa <- data.frame(name = c("jack", "rose"),
id = c(1, 2))
dfb <- data.frame(id = c("a", "b"),
job = c("student", "tutor"))
dfc <- data.frame(primary = c("a", "b"),
colname = c(2, 1))
# Obtain the indexes that match between dfa and dfc
index <- match(dfa$id, dfc$colname)
# Set the id from dfa as the id in dfb taking into account the previous indices
dfa$id <- dfb$id[index]
# Print results
dfa
name id
1 jack b
2 rose a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.