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