合并数据集而不丢失数据

时间:2018-05-17 01:50:15

标签: r merge

我有几个数据集,在某些点上对物种进行了不同的数值观察。但是,如果在某一点上没有观察到物种,那么该物种的数据就不存在这一点。我想合并这些数据集,以便我可以分析每个点的物种组成,但是如果在该点没有观察到物种,则需要输入值0。

不知道如何解决这个问题。尝试使用合并功能,但如果在其中一个物种数据集中没有观察到该点,则该点将丢失。

物种1:

Point, Species1
1, 19
3, 12
4, 11
6, 23

物种2:

Point, Species2
2, 10
3, 20
5, 12
6, 25

期望的结果:

Point, Species1, Species2
1, 19, 0
2, 0, 10
3, 12, 20
4, 11, 0
5, 0, 12
6, 23, 25

2 个答案:

答案 0 :(得分:2)

您可以使用dplyr::full_join()

require(tidyverse)

df1 <- data.frame(Point = c(1,3,4,6), Species1 = c(19,12,11,23))
df2 <- data.frame(Point = c(2,3,5,6), Species2 = c(10,20,12,25))

df1 %>% 
  full_join(df2) %>% 
  replace_na(list(Species1=0, Species2=0)) %>%
  arrange(Point)

  Point Species1 Species2
1     1       19        0
2     2        0       10
3     3       12       20
4     4       11        0
5     5        0       12
6     6       23       25

答案 1 :(得分:2)

您只需要merge

all=True
s=merge(df1,df2,on='Point',all=T)
s[is.na(s)]=0
s
  Point Species1 Species2
1     1       19        0
2     2        0       10
3     3       12       20
4     4       11        0
5     5        0       12
6     6       23       25