gpt4 book ai didi

r - 与另一个数据框中的两个变量匹配的子集数据

转载 作者:行者123 更新时间:2023-12-04 11:05:15 25 4
gpt4 key购买 nike

情况

我有两个数据框,df1df2:

id <- c(1, 2, 3, 4, 5, 6, 7, 8)
position <- c("AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH")
value <- c(100, 200, 300, 400, 500, 600, 700, 800)
df1 <- data.frame(id, position, value)

id <- c(1, 2, 3, 4, 6, 8)
position <- c("AA", "BB", "CC", "EE", "DD", "HH")
value <- c(700, 800, 900, 100, 200, 900)
df2 <- data.frame(id, position, value)

问题

我想选择 df1 中的所有行,其中 df2 中有匹配的 idposition >.

尝试

我很确定这很简单,但我正在努力寻找合适的解决方案。

我可以使用 merge 来做到这一点,但我想避免必须删除列和硬编码变量名称。

#this method works for this small example but I have many variables and don't want
#to write them all out when removing the unwanted ones
df3 <- merge(x=df1, y=df2, by=c("id","position"))
df3 <- df3[,-4] #remove unused column
df3

我想我可以使用dplyr,类似

#library(dplyr)
df3 <- filter(df1, id %in% df2$id)
df3

但是我在两个变量上匹配的运气不太好。

期望的输出

  id position value.x
1 1 AA 100
2 2 BB 200
3 3 CC 300
4 8 HH 800

感谢任何帮助。

最佳答案

merge 仍然可以非常有效地使用,无需在合并后删除列。

keys <- c("id","position")
merge(df1,df2[keys],by=keys)

# id position value
#1 1 AA 100
#2 2 BB 200
#3 3 CC 300
#4 8 HH 800

关于r - 与另一个数据框中的两个变量匹配的子集数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27142192/

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