没有很多for循环和if语句的数据帧列的比较

时间:2019-01-28 14:00:27

标签: r dataframe

我对R很陌生。

我想比较三个数据框,以查看它们是否在其中一列中包含相同的信息。

数据看起来像这样(仅更长):

df_1
id comment coord.x  coord.y
1    <NA>  64.492 1186.803
2    <NA>  64.418 1185.560
3    <NA>  64.418 1183.001
4    <NA>  64.492 1180.953
5    <NA>  64.492 1179.345
6    <NA>  64.418 1177.517
7    <NA>  64.345 1175.396

df_2
id comment coord.x coord.y
1    <NA>   64.34 1186.73
2    <NA>   64.39 1185.42
3    <NA>   64.25 1183.04
4      #c   64.39 1181.80
5      #c   64.48 1175.26
6    <NA>   64.43 1173.41
7    <NA>   64.48 1170.12

df3
id comment coord.x  coord.y
1    <NA>  64.600 1186.769
2    <NA>  64.513 1185.377
3    <NA>  64.513 1182.984
4    <NA>  64.559 1180.722
5    <NA>  64.603 1179.286
6    <NA>  64.429 1177.502
7      #c  64.429 1174.905

我想找到coord.y中有多少个真正唯一的值,并查看在三个数据框中是否重复了这些值。我将认为在0.3范围内一致的任何值都是“相同”,即。不是唯一的。然后,我想创建一个包含这些唯一coord.y值的表,以及另一个列,该列将指示哪些数据帧包含该值。因此111可以指示它存在于所有三个数据帧中,而010可以指示它仅存在于df_2中。一个额外的麻烦是,我还需要从搜索中排除任何包含#c的行。

因此,本示例的结果将是一个如下所示的矩阵:

result
1186.803    111
1185.560    111
1183.001    111 
1180.953    101
1179.345    101
1177.517    101
1175.396    100
1173.41     010
1170.12     010

最后,将哪个值另存为唯一值并不重要。如果在多个数据帧中找到相同的值(在0.3范围内),我可能最终将其取平均值,但是现在这并不重要。

我开始用几个if语句构造一个for循环,但是这样做变得相当复杂。 R中可能有一种更简单的方法来对此进行编程以获取相似的结果。

如果问题不清楚,请告诉我。

0 个答案:

没有答案