R 正确的子集解

R 正确的子集解,r,R,我有两个数据帧clust1和clust2,它们的行数不同。clust1有53行,clust2有150行。我想对这些项目进行子集划分,以标识clust2中具有与clust1相似的经度和纬度的行项目 如果我写这段代码: a <- subset(clust2, clust2$Pickup_longitude == clust1$Pickup_longitude) 如果我这样写: a <- subset(clust2, clust2[53,]$Pickup_longitude == clu

我有两个数据帧clust1和clust2,它们的行数不同。clust1有53行,clust2有150行。我想对这些项目进行子集划分,以标识clust2中具有与clust1相似的经度和纬度的行项目

如果我写这段代码:

a <- subset(clust2, clust2$Pickup_longitude == clust1$Pickup_longitude)
如果我这样写:

a <- subset(clust2, clust2[53,]$Pickup_longitude == clust1$Pickup_longitude)

a您可以使用dplyr的semi_join()

库(dplyr)

a您可以使用dplyr的semi_join()

库(dplyr)
一个评论就行了,你只需要:

a <- subset(clust2, clust2$Pickup_longitude %in% clust1$Pickup_longitude)
这将为您提供clust2中的行号,这些行号在clust1中具有相同的long。

注释将起作用,您只需:

a <- subset(clust2, clust2$Pickup_longitude %in% clust1$Pickup_longitude)


这将为您提供clust2中的行号,这些行号在clust1中具有相同的long。

您是否尝试使用%in%而不是==?尝试
合并(clust1,clust2,by=picku\u经度)
发布
clust1
clust2
的样本数据和预期输出
a
将有助于我们提供工作解决方案。@戈帕拉:在这个问题中,数据结构并不重要。您可以使用以下数据帧作为数据帧
clust1=data.frame(皮卡经度=c(1,2,3,4,5),lat=c(1,2,3,4,5))clust2=data.frame(拾取经度=c(1,3,7),lat=c(1,3,7))
您尝试过使用%而不是==?尝试
合并(clust1,clust2,by=拾取经度)
发布
clust1
clust2
的样本数据和预期输出
a
将有助于我们提供工作解决方案。@戈帕拉:在这个问题中,数据结构并不重要。您可以使用以下数据帧作为数据帧
clust1=data.frame(皮卡经度=c(1,2,3,4,5),lat=c(1,2,3,4,5))clust2=data.frame(picku_longitude=c(1,3,7),lat=c(1,3,7))
我收到了这个错误“对象‘picku_longitude’在包装过程中没有找到错误:无法打开连接。”它必须在‘引号’中。@Adrian一般来说,b有什么问题?发布错误时更容易诊断。但是我想如果你说:“semi_join(clustd2,clustp1,by=c(“皮卡经度”=“皮卡经度”,“皮卡经度”=“皮卡经度”)我得到了这个错误”对象“皮卡经度”在wrapup期间未找到错误:无法打开连接。“必须用‘引号’。@Adrian一般来说,当你发布错误时,诊断b有什么问题比较容易。但我认为如果你说:“semi_join(clustd2,clustp1,by=c(“picku_longitude”=“picku_longitude”,“picku_lation”=“picku_lation”)谢谢,但我对结果有疑问。在你的部分(在which声明中),您只使用了经度。如何同时使用经度和纬度在哪个语句中我们需要一个可复制的数据示例来检查这一点,只有当值完全相同时,这才会匹配。要检查类似的值,您可以将给定的数字四舍五入到小数位数。如果要使用经度和纬度,请uld使用以下命令
假设具有纬度的列具有与经度对应的名称“picku latitude”(clust2$picku longitude%在%clust1$picku\u longitude中&clust2$picku\u latitude%在%clust1$picku\u latitude中)
假设具有纬度的列具有与经度对应的名称“picku latitude”。同样的操作可以在子集函数中完成。但这仍然不起作用“类似的“lat&longs”,但只有相同的tanks,它有效,但我对结果有疑问。在你的部分(在which语句中),您只使用了经度。如何同时使用经度和纬度在哪个语句中我们需要一个可复制的数据示例来检查这一点,只有当值完全相同时,这才会匹配。要检查类似的值,您可以将给定的数字四舍五入到小数位数。如果要使用经度和纬度,请uld使用以下命令
假设具有纬度的列具有与经度对应的名称“picku latitude”(clust2$picku longitude%在%clust1$picku\u longitude中&clust2$picku\u latitude%在%clust1$picku\u latitude中)
假设具有纬度的列具有与经度对应的名称“picku latitude”。同样的操作可以在子集函数中完成。但这仍然不起作用“类似的“横向和纵向”,但仅相同
a <- subset(clust2, clust2$Pickup_longitude %in% clust1$Pickup_longitude)
which(clust2$Pickup_longitude %in% clust1$Pickup_longitude)