[英]querying one R data frame by matching multiple columns from a second data frame
假設我有一個數據集,該數據集描述了不同地點d1
處不同物種的豐度:
site <- c(1:5)
species1 <- c('A','A','B','C','A')
abundance1<- c(0.11,0.45,0.87,1.00,0.23)
species2 <- c('B','C','A','A','C')
abundance2 <- 1 - abundance1
d1<- data.frame(site,species1,abundance1,species2,abundance2)
因此,每個站點都有兩個物種,並且有一個abundance
列來描述每個物種所代表的總群落比例。
然后,我有了第二個數據集d2
,該數據集描述了圖中某個物種的某些性狀度量,例如weight
。 因此,圖1中的物種A可能與圖2中的物種A具有不同的weight
觀測結果。數據幀d2
如下所示:
site<- c(1,1,2,2,3,3,4,4,5,5)
species <- c('A','B','A','C','B','A','C','A','A','C')
weight <- rnorm(10, 50,4)
d2<- data.frame(site,species,weight)
我想使用d2
的weight
數據在d1
中生成一列,即weight
加權平均數,以便在最終計算中為圖中的每個物種分配其唯一的weight
觀測值。
新計算出的向量的第一項的預期輸出將是函數的輸出:
d1[1,3]*d2[1,3] + d1[1,5]*d2[2,3]
老式R.可能是與其他軟件包比較容易的方法,但是直接apply
。
d1$newvec <- apply(d1, 1, function(x)
d2[d2$site==x[1]&d2$species==x[2],'weight']*as.numeric(x[3]) +
d2[d2$site==x[1]&d2$species==x[4],'weight']*as.numeric(x[5]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.