2016-08-25 23 views
1

私はコミュニティマトリックスを持っています(サンプルx種の動物)。私は何年にもわたって毎週動物をサンプリングしました(この例では3年)。私はサンプリングのタイミング(開始週と持続時間a.k.a週数)が種の豊かさにどのように影響するかを理解したい。ここでは例のデータセットは次のとおりです。rollapply + specnumber =長さが異なるサンプリング間隔の豊富な種?

Data <- data.frame(
    Year = rep(c('1996', '1997', '1998'), each = 5), 
    Week = rep(c('1', '2', '3', '4', '5'), 3), 
    Species1 =sample(0:5, 15, replace=T), 
    Species2 =sample(0:5, 15, replace=T), 
    Species3 =sample(0:5, 15, replace=T) 
) 

私が望む結果はの線に沿って何かである:

Year StartWeek Duration(weeks) SpeciesRichness 
1996 1   1     2 
1996 1   2     3 
1996 1   3     1 
... 
1998 5   1     1 

私はrollapplyとビーガンのspecnumberの組み合わせによってこれをやってみましたが、持っていました種の豊かさのベクトルではなく、サンプルx種の行列。奇妙な。

は例えば、私はこの2週間の窓をサンプリングするための私の種の豊かさを与えるべきであると考えた:

test<-rollapply(Data[3:5],width=2,specnumber,align="right") 

はあなたの助けをありがとう!

答えて

0

私は二つの部分にタスクを分割することにより、それを考え出した:ddplyrに実装され、rollapplyrを使用して、種の存在量を合計 1. 2.計算の種はビーガン使用して豊富さthingamabob mutate_each。

これは、サンプリング期間ごとに別々に行いました。ここで

裸の骨のバージョン(私はちょうど私が幅引数を変更して欲しかった各サンプリング期間に連続的にこれをしなかった)です:

weeksum2 <- function(x) {rollapply(x, width = 2, align = 'left', sum, fill=NA)} 
sum2weeks<-Data%>% 
    arrange(Year, Week)%>% 
    group_by(Year)%>% 
    mutate_each(funs(weeksum2), -Year, -Week) 


weeklyspecnumber2<-specnumber(sum2weeks[,3:ncol(sum2weeks)], 
           groups = interaction(sum2weeks$Week, sum2weeks$Year)) 
weeklyspecnumber2<-unlist(weeklyspecnumber2) 
weeklyspecnumber2<-as.data.frame(weeklyspecnumber2) 
weeklyspecnumber2$WeekYear<-as.factor(rownames(weeklyspecnumber2)) 
weeklyspecnumber2<-tidyr::separate(weeklyspecnumber2, WeekYear, into = c('Week', 'Year'), sep = '[.]') 
関連する問題