我似乎无法通过在 SO 上的搜索找到答案。data.frame
我正在尝试根据四个条件(lon1、lon2、lat1和lat2)选择 a 的子集。我有一个巨大的相异矩阵,它已经被矢量化,并且它的站点(lon1、lon2、lat1和lat2)cbind
。这是一个示例数据框:
out1 <- data.frame(lon1 = sample(1:10), lon2 = sample(1:10),
lat1 = sample(1:10), lat2 = sample(1:10),
dissimilarity = sample(seq(0,1,.1),10))
> out1
lon1 lon2 lat1 lat2 dissimilarity
1 2 6 4 4 0.6
2 4 2 1 3 1.0
3 10 9 2 6 0.0
4 3 1 10 8 0.5
5 9 5 9 1 0.8
6 5 7 5 9 0.9
7 1 8 6 7 0.2
8 8 3 8 5 0.7
9 7 4 3 10 0.3
10 6 10 7 2 0.1
out2 <- out1[c(2,5,6,8),]
lon1 lon2 lat1 lat2 dissimilarity
1 4 2 1 3 1.0
2 9 5 9 1 0.8
3 5 7 5 9 0.9
4 8 3 8 5 0.7
我尝试%in%
以这种方式使用函数几次:
test <- out1[(out1$lon1 %in% out2$lon1) & (out1$lon2 %in% out2$lon2) &
(out1$lat1 %in% out2$lat1) & (out1$lat2 %in% out2$lat2), ]
这似乎适用于我在此处提供的基本示例。但是,当我将它应用于我的巨大数据框(有很多lat
且lons
重复)时,我得到的子集比我需要的unqiue组合更大。我假设是因为 match 函数%in%
只能匹配一个向量。所以它匹配 condition1 &
condition2 &
condition3 &
condition4 并因此返回一个结果,它给出了一个与原始相同的子集out1
。我只想得到该行的所有四个值都相同的情况。这样,我将获得我感兴趣的成对差异的数据子集。
任何关于如何基于四个变量的独特组合逐行子集的想法将不胜感激。