计算 'class' 条件的出现次数
Count number of occurrence with a 'class' condition
我正在尝试计算 'class' 海拔中物种出现的次数(沿海拔梯度分布)。
这是原始数据框:
tab
R sp N Hauteur Alt Plot Quadrat Microhab Cover
1 R2 B 1 0-50cm 350 P1 Q1 TA 50
2 R2 D 1 0-50cm 350 P1 Q1 TA 50
3 R3 A 2 0-50cm 550 P1 Q1 TA 95
4 R3 C 1 0-50cm 550 P1 Q1 TA 95
5 R3 B 3 0-50cm 550 P1 Q1 TA 95
6 R3 D 4 0-50cm 550 P1 Q1 TA 95
7 R4 C 3 0.5-1m 350 P1 Q1 TB 50
8 R4 A 4 0.5-1m 350 P1 Q1 TB 50
9 R4 E 2 0.5-1m 350 P1 Q1 TB 50
10 R4 D 3 0.5-1m 350 P1 Q1 TB 50
11 R4 B 4 0.5-1m 350 P1 Q1 TB 50
这是我想要获得的:
head(parametres)
SP Altmin Altmax Altmoy nb_350.549 nb_550.749 [...] %_350.549m
A 350 550 450 1 0 ... 50
B 350 550 416.67 2 1 ... 33.3
C 350 550 450 1 0 ... 50
为此,我设法获得了前 4 列("SP"、"Altmin"、"Altmax"、"Altmoy")。但是我没有设法得到'class of altitude'(例如"nb_350.549")的出现次数,也没有得到每个海拔高度的代表性百分比class,关于每个海拔高度的出现次数物种(例如“%_350.549)——实际上是 = nb.occ.SP(A) / nb_350.549 *100
这是我的脚本:
parametres<-ddply(tab,.(sp),function(esp){
+ summarise(esp,
+ Altmin=min(Alt),
+ Altmax=max(Alt),
+ Altmoy=mean(Alt),
+ )})
有什么想法吗?
谢谢!
R.
这是一个dplyr
解决方案
tab <- read.table(text="R sp N Hauteur Alt Plot Quadrat Microhab Cover
R2 B 1 0-50cm 350 P1 Q1 TA 50
R2 D 1 0-50cm 350 P1 Q1 TA 50
R3 A 2 0-50cm 550 P1 Q1 TA 95
R3 C 1 0-50cm 550 P1 Q1 TA 95
R3 B 3 0-50cm 550 P1 Q1 TA 95
R3 D 4 0-50cm 550 P1 Q1 TA 95
R4 C 3 0.5-1m 350 P1 Q1 TB 50
R4 A 4 0.5-1m 350 P1 Q1 TB 50
R4 E 2 0.5-1m 350 P1 Q1 TB 50
R4 D 3 0.5-1m 350 P1 Q1 TB 50
R4 B 4 0.5-1m 350 P1 Q1 TB 50",head=TRUE)
library(dplyr)
tab %>% group_by(sp) %>%
summarize(n=n(),
Altmin=min(Alt),
Altmax=max(Alt),
Altmoy=mean(Alt),
nb_350.549=sum(ifelse(Alt >= 350 & Alt < 550,1,0)),
nb_550.749=sum(ifelse(Alt >= 550 & Alt < 749,1,0))) %>%
mutate(f_350.549=nb_350.549/n*100,
f_550.749=nb_550.749/n*100)
Source: local data frame [5 x 9]
sp n Altmin Altmax Altmoy nb_350.549 nb_550.749 f_350.549 f_550.749
1 A 2 350 550 450.0000 1 1 50.00000 50.00000
2 B 3 350 550 416.6667 2 1 66.66667 33.33333
3 C 2 350 550 450.0000 1 1 50.00000 50.00000
4 D 3 350 550 416.6667 2 1 66.66667 33.33333
5 E 1 350 350 350.0000 1 0 100.00000 0.00000
我正在尝试计算 'class' 海拔中物种出现的次数(沿海拔梯度分布)。
这是原始数据框:
tab
R sp N Hauteur Alt Plot Quadrat Microhab Cover
1 R2 B 1 0-50cm 350 P1 Q1 TA 50
2 R2 D 1 0-50cm 350 P1 Q1 TA 50
3 R3 A 2 0-50cm 550 P1 Q1 TA 95
4 R3 C 1 0-50cm 550 P1 Q1 TA 95
5 R3 B 3 0-50cm 550 P1 Q1 TA 95
6 R3 D 4 0-50cm 550 P1 Q1 TA 95
7 R4 C 3 0.5-1m 350 P1 Q1 TB 50
8 R4 A 4 0.5-1m 350 P1 Q1 TB 50
9 R4 E 2 0.5-1m 350 P1 Q1 TB 50
10 R4 D 3 0.5-1m 350 P1 Q1 TB 50
11 R4 B 4 0.5-1m 350 P1 Q1 TB 50
这是我想要获得的:
head(parametres)
SP Altmin Altmax Altmoy nb_350.549 nb_550.749 [...] %_350.549m
A 350 550 450 1 0 ... 50
B 350 550 416.67 2 1 ... 33.3
C 350 550 450 1 0 ... 50
为此,我设法获得了前 4 列("SP"、"Altmin"、"Altmax"、"Altmoy")。但是我没有设法得到'class of altitude'(例如"nb_350.549")的出现次数,也没有得到每个海拔高度的代表性百分比class,关于每个海拔高度的出现次数物种(例如“%_350.549)——实际上是 = nb.occ.SP(A) / nb_350.549 *100
这是我的脚本:
parametres<-ddply(tab,.(sp),function(esp){
+ summarise(esp,
+ Altmin=min(Alt),
+ Altmax=max(Alt),
+ Altmoy=mean(Alt),
+ )})
有什么想法吗?
谢谢!
R.
这是一个dplyr
解决方案
tab <- read.table(text="R sp N Hauteur Alt Plot Quadrat Microhab Cover
R2 B 1 0-50cm 350 P1 Q1 TA 50
R2 D 1 0-50cm 350 P1 Q1 TA 50
R3 A 2 0-50cm 550 P1 Q1 TA 95
R3 C 1 0-50cm 550 P1 Q1 TA 95
R3 B 3 0-50cm 550 P1 Q1 TA 95
R3 D 4 0-50cm 550 P1 Q1 TA 95
R4 C 3 0.5-1m 350 P1 Q1 TB 50
R4 A 4 0.5-1m 350 P1 Q1 TB 50
R4 E 2 0.5-1m 350 P1 Q1 TB 50
R4 D 3 0.5-1m 350 P1 Q1 TB 50
R4 B 4 0.5-1m 350 P1 Q1 TB 50",head=TRUE)
library(dplyr)
tab %>% group_by(sp) %>%
summarize(n=n(),
Altmin=min(Alt),
Altmax=max(Alt),
Altmoy=mean(Alt),
nb_350.549=sum(ifelse(Alt >= 350 & Alt < 550,1,0)),
nb_550.749=sum(ifelse(Alt >= 550 & Alt < 749,1,0))) %>%
mutate(f_350.549=nb_350.549/n*100,
f_550.749=nb_550.749/n*100)
Source: local data frame [5 x 9]
sp n Altmin Altmax Altmoy nb_350.549 nb_550.749 f_350.549 f_550.749
1 A 2 350 550 450.0000 1 1 50.00000 50.00000
2 B 3 350 550 416.6667 2 1 66.66667 33.33333
3 C 2 350 550 450.0000 1 1 50.00000 50.00000
4 D 3 350 550 416.6667 2 1 66.66667 33.33333
5 E 1 350 350 350.0000 1 0 100.00000 0.00000