gpt4 book ai didi

r - 比较两个数据框以查找范围内的缺失值

转载 作者:行者123 更新时间:2023-12-04 09:33:13 25 4
gpt4 key购买 nike

我有以下 2 个数据帧:

a1 <- data.frame(count = 1:10, site = "a")
a2 <-data.frame(count = 2:8, site = "b")
a4 <- data.frame(count = c(3,6,7,9), site = "a")
a5 <- data.frame(count = c(3,5,7), site = "b")
data1 <- rbind(a1, a2)
data2 <- rbind(a4, a5)

我想生成一个数据框,根据列“count”列出 data1 中未在 data2 中找到的行。有很多方法可以做到这一点,例如:

method1 <- rbind(data1, data2)
method1[!duplicated(method1,fromLast = FALSE)&!duplicated(method1,fromLast = TRUE),]

哪个返回:

   count site
1 1 a
2 2 a
4 4 a
5 5 a
8 8 a
10 10 a
11 2 b
13 4 b
15 6 b
17 8 b

或类似这样的东西(作为附带问题,这行代码无法完美运行,我将不胜感激任何见解,因为我一直在其他几个数据处理步骤中使用此命令):

method2 <- data1[!data1$count %in% data2$count,]

无论如何,主要问题是:如何返回data2中计数范围内的缺失行?即,我希望输出为:

   count site
4 4 a
5 5 a
8 8 a
13 4 b
15 6 b

我有数百个数据框,每个数据框都包含许多具有高度可变范围的站点。

这是我第一次发帖,感谢您花时间阅读我的问题,我很感激任何建议的解决方案。

最佳答案

我认为他做了你想要的“根据列“count”列出 data1 中未在 data2 中找到的行:

method2 <- data1[!data1$count %in% data2$count,]
result <- subset(method2, method2$count > min(data2$count) &
method2$count < max(data2$count))

你的代码

method2 <- data1[!data1$count %in% data2$count,]

做了它应该做的事,但看起来您不仅要排除基于 count 的变量,而且要基于 count 的组合>网站...?

编辑:好的,看来您确实也想考虑站点,而不仅仅是计数。在这种情况下,这是您想要的吗?

method2 <- data1[! interaction(data1$count, data1$site) %in%
interaction(data2$count,data2$site),]
result <- subset(method2, method2$count > min(data2$count) &
method2$count < max(data2$count))

EDIT2:现在值在每个站点定义的范围内。

method2[apply(method2, 1, function(x)  
as.numeric(x["count"]) > min(data2$count[data2$site == x["site"]]) &
as.numeric(x["count"]) < max(data2$count[data2$site == x["site"]]) )
,]

关于r - 比较两个数据框以查找范围内的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409428/

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