gpt4 book ai didi

r - R中具有多个条件的左连接

转载 作者:行者123 更新时间:2023-12-01 03:08:30 25 4
gpt4 key购买 nike

我正在尝试为它们各自的值替换 id。问题是每个id根据上一列type有不同的值, 像这样:

>df
type id
1 q1 1
2 q1 2
3 q2 1
4 q2 3
5 q3 1
6 q3 2

这是类型 ID 及其值:
>q1
id value
1 1 yes
2 2 no

>q2
id value
1 1 one hour
2 2 two hours
3 3 more than two hours

>q3
id value
1 1 blue
2 2 yellow

我试过这样的事情:
df <- left_join(subset(df, type %in% c("q1"), q1, by = "id"))

但它删除了其他值。

我想知道如何做 one liner solution (或某种)因为有超过 20 个带有类型描述的向量。

关于如何做到这一点的任何想法?

这是我期待的 df:
>df
type id value
1 q1 1 yes
2 q1 2 no
3 q2 1 one hour
4 q2 3 more than two hours
5 q3 1 blue
6 q3 2 yellow

最佳答案

您可以加入多个变量。您提供的示例 df 实际上会为此制作一个合适的查找表:

value_lookup <- data.frame(
type = c('q1', 'q1', 'q2', 'q2', 'q3', 'q3'),
id = c(1, 2, 1, 3, 1, 2),
value = c('yes', 'no', 'one hour', 'more than two hours', 'blue', 'yellow')
)

然后你只需合并两个 typeid :
df <- left_join(df, value_lookup, by = c('type', 'id'))  

通常,当我需要这样的查找表时,我会将其存储在 CSV 中,而不是将其全部写在代码中,而是做适合您的任何事情。

关于r - R中具有多个条件的左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com