我有15只鹿,我正在分析那里使用的和从斜坡上提取的预期数据点。文件。目前我正在分析预期的数据并且计算百分比存在问题
使用的包是光栅包,rgdal和psych包。 数据布局:我的数据显示在" list"格式并显示每个具有结构的个体(即15行):
Deer01: 2 1 5 4 2 3 2 2
(其中数字代表坡度倾斜的类别)。但是,我现在想要尝试计算所有鹿的5或2(代表坡度)的总数,并将其转换为百分比。
问题:我不知道如何从"列表"中计算5类(或2' s等)的比例。上面描述的数据结构需要帮助。 我想我必须总结行/列或其他东西,但我不确定如何。有人知道吗?从下面的语法中可以明显看出,只有一个列标题引用了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")
尝试通过空间多边形提取斜率&#34;使用矢量格式并维护Object_ID 这里的数据需要在&#34;列表&#34;格式
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
为了尝试帮助人们看到我的数据结构,我已经从我看到我的数据的控制台中复制了一些数据。见下文(左边没有&#39;只是一个带有斜率代码的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..
希望有人可以提供帮助,谢谢
答案 0 :(得分: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")