如何根据 R 中的坐标从数据框中删除行
How to eliminate rows from a dataframe based on coordinates in R
我正在使用两个包含坐标 (x,y) 和降水值的数据框,因为我正在尝试绘制特定区域降雨量分布图。
我的数据集内容如下
head(cruproc,n=10)
x y value
1 -97.75 15.75 0.1354839
2 -97.25 15.75 0.1419355
3 -96.75 15.75 0.0000000
4 -96.25 15.75 0.0000000
5 -95.75 15.75 0.1580645
6 -93.75 15.75 0.2129032
7 -93.25 15.75 0.1096774
8 -92.75 15.75 0.1419355
9 -92.25 15.75 0.4322581
10 -91.75 15.75 0.8483871
head(interp.df,n=10)
x y pr
1 -97.75 -52.25 4.4805383
2 -97.25 -52.25 4.0390802
3 -97.75 -51.75 3.6501175
4 -97.25 -51.75 3.3274986
5 -97.75 -51.25 2.9044791
6 -97.25 15.75 3.0526965
7 -97.75 -49.75 2.7278418
8 -97.25 -49.75 2.8603867
9 -92.75 15.75 2.6617398
10 -93.25 15.75 2.6521587
如您所见,interp.df
中存在的许多坐标在 cruproc
中不存在,因此我试图消除 interp.df
中坐标不存在的所有行' 也出现在 cruproc
.
在我提供的行示例中,仅保留 interp.df
的第 6、9、10 行,因为它们分别与另一个数据框中的第 2、8、7 行具有相同的坐标。这样输出应该是:
1 -97.25 15.75 3.0526965
2 -92.75 15.75 2.6617398
3 -93.25 15.75 2.6521587
我是 R 的新手,所以我非常感谢任何关于如何做到这一点的见解。
我们可以使用 inner_join()
:
return 来自 x 的所有行,其中在 y[=23= 中有 匹配的 值],以及来自 x 和 y 的所有列。如果 x 和 y 之间有多个匹配项,则匹配项的所有组合都是 returned.
见https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/join
library(dplyr)
inner_join(interp.df, cruproc, by=c("x", "y")) %>%
select(-value)
x y pr
1 -97.25 15.75 3.052697
2 -92.75 15.75 2.661740
3 -93.25 15.75 2.652159
我正在使用两个包含坐标 (x,y) 和降水值的数据框,因为我正在尝试绘制特定区域降雨量分布图。
我的数据集内容如下
head(cruproc,n=10)
x y value
1 -97.75 15.75 0.1354839
2 -97.25 15.75 0.1419355
3 -96.75 15.75 0.0000000
4 -96.25 15.75 0.0000000
5 -95.75 15.75 0.1580645
6 -93.75 15.75 0.2129032
7 -93.25 15.75 0.1096774
8 -92.75 15.75 0.1419355
9 -92.25 15.75 0.4322581
10 -91.75 15.75 0.8483871
head(interp.df,n=10)
x y pr
1 -97.75 -52.25 4.4805383
2 -97.25 -52.25 4.0390802
3 -97.75 -51.75 3.6501175
4 -97.25 -51.75 3.3274986
5 -97.75 -51.25 2.9044791
6 -97.25 15.75 3.0526965
7 -97.75 -49.75 2.7278418
8 -97.25 -49.75 2.8603867
9 -92.75 15.75 2.6617398
10 -93.25 15.75 2.6521587
如您所见,interp.df
中存在的许多坐标在 cruproc
中不存在,因此我试图消除 interp.df
中坐标不存在的所有行' 也出现在 cruproc
.
在我提供的行示例中,仅保留 interp.df
的第 6、9、10 行,因为它们分别与另一个数据框中的第 2、8、7 行具有相同的坐标。这样输出应该是:
1 -97.25 15.75 3.0526965
2 -92.75 15.75 2.6617398
3 -93.25 15.75 2.6521587
我是 R 的新手,所以我非常感谢任何关于如何做到这一点的见解。
我们可以使用 inner_join()
:
return 来自 x 的所有行,其中在 y[=23= 中有 匹配的 值],以及来自 x 和 y 的所有列。如果 x 和 y 之间有多个匹配项,则匹配项的所有组合都是 returned.
见https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/join
library(dplyr)
inner_join(interp.df, cruproc, by=c("x", "y")) %>%
select(-value)
x y pr
1 -97.25 15.75 3.052697
2 -92.75 15.75 2.661740
3 -93.25 15.75 2.652159