2014-11-05 214 views
-6

我有15个鹿,我正在用它分析从斜坡tif中提取的使用和预期数据点。文件。目前我正在分析预期数据,并在计算百分比时遇到问题从“列表”中计算百分比,R

使用的软件包是栅格软件包,rgdal和psych软件包。 数据布局:我的数据以“列表”格式显示,并显示给每个人(即15行),每个人的结构如下:Deer01,2 1 5 4 2 3 2 2(其中数字表示斜坡的类别) 。但是,我现在想尝试计算所有鹿的5或2的总数(代表斜率),并将其转换为百分比。

问题:我不知道如何从上面描述的“列表”数据结构中计算类别5(或2等)的比例,并且需要帮助。 我想我必须总结行/列或东西,但我不确定如何。有人知道如何?从下面的语法中可以明显看出,只有1个列标题引用了ID(Deer)列(参见上文中的结构类型)。

这里是完整的语法我用内50%的活动范围:

install.packages("raster") 
library(raster) 
install.packages("rgdal") 
library(rgdal) 
Slope<-raster("C:\\REWORK\\SLOPE011.tif") 
plot(Slope) 
Slope 
str(Slope) 
install.packages("psych") 
library(psych) 

计算和分类的50%的预期斜率值

m <- matrix (c(0, 5, 1, 
5, 10, 2, 
10, 15, 3, 
15, 20, 4, 
20, Inf, 5), ncol=3, byrow=TRUE) 

r2 <- reclassify(Slope, m) 
r2 
plot(r2) 

All50HRs<-shapefile("L:\\GPSdatabackup\\KERNELS\\NewHRs50") 
plot(All50HRs) 
All50HRs 
library(raster) 
update.packages("raster") 

尝试使用矢量格式,以提取由空间的多边形坡”并维护Object_ID 这里数据是以“列表”格式需要的

Exp50poly <- extract(r2, All50HRs) 
names(Exp50poly)<-All50HRs$Object_ID 
str(Exp50poly) 

这部分是我在试图摆脱在STR(Exp50poly)显示的数据的比例值的尝试,但它似乎没有工作

Exp50polycov.table50.sum<-colSums(Exp50polycov.table50) 
Exp50polycov.table50.sum<-Exp50polycov.table50.sum/sum(Exp50polycov.table50.sum) 
Exp50polycov.table50.sum 

尝试和帮助的人看到我的数据结构,我抄来自控制台的一些数据,我看到了我的数据。见下面(左边的'是只有一个ID,右边的斜率代码)。这是重复15次为每个

dr_12_008_11: num [1:2089] 1 1 2 3 2 2 1 1 1 2... 
dr_14_011_12: num [1:5260] 2 2 2 2 2 2 2 2 2 2... 
dr_10_012_14: num [1:710] 2 2 2 2 3 3 2 2 3 3 2.. 

希望有人能帮助,谢谢

+2

您正在使用的术语,我怀疑仅由一些不知名的包或纪律的其他用户共享。也许你应该提供一个完整的例子(并解释你对术语“圈子”的理解),或者考虑为这个软件包的用户找到一个邮件列表,或者分享你对这些术语的理解。 – 2014-11-05 17:47:55

+0

提取?你在使用光栅包吗?这并不完全清楚。 – Spacedman 2014-11-05 17:48:21

回答

0

这是很难回答没有看到你是如何塑造你的数据。

我假设你的数据看起来是这样的:

Circle Habitat 
circle25 1 
circle14 2 

如果是这样的话,你可以简单地添加新列和填充每一行有1:

dataframe$Proportion <- 1 

下面,你可以然后根据聚合的圆圈类型计算每种类型栖息地的百分比:

Percentage <- aggregate(dataframe$Proportion, 
       by=list(dataframe$Circle,dataframe$Habitat),FUN="mean") 

这是基于你模糊的问题的完整猜测,所以我可能没有正确回答。

如果你只是想栖息地的比例整体使用相同的聚合,但下降的圈栏:

Percentage <- aggregate(dataframe$Proportion, 
       by=list(dataframe$Habitat),FUN="mean") 
+0

谢谢你的回答,下面我试图提供一个更详细的描述我的问题,因为我之前的描述我承认有些模糊。 – user1667816 2014-11-05 19:02:31

+0

新描述在哪里? – Docconcoct 2014-11-05 19:04:56

+0

我正在分析15个个体鹿(如AllHRs50或多边形)的'已使用'和'预期'斜率数据。我目前正在使用这些“可用区域”(多边形,请参阅下面的语法)计算预期的斜率值:m < - matrix(c(0,5,1, 5,10,2, 10,15,3, 15,20,如图4所示, 20,天道酬勤,5),NcoI位= 3,byrow = TRUE) R2 < - 重新分类(斜率m) R2 All50HRs <-shapefile(“L:\\ GPSdatabackup \ \ KERNELS \\ NewHRs50" ) All50HRs Exp50poly < - 提取物(R2,All50HRs) 名(Exp50poly)< - All50HRs $ OBJECT_ID STR(Exp50poly) – user1667816 2014-11-05 19:46:18