Скрипт на R для работы - Часть I

# ввожу данные из файла

transecta <- read.csv(file = (description = "e:/transecta.csv"),

                  sep = ";", h=F, dec = ",")

transecta[is.na(transecta=='NA')] <- 0


# считываю данные по первым двум точкам в векторы

pp_1 <- transecta[, 1]

pp_2 <- transecta[, 2]

 

 

# рассчитываю меру Коуди

# задаю счётные переменные

g <- 0

l <- 0

 

# начинаю цикл

for(i in 1:length(pp_1)) {

  ifelse(pp_1[i] == 0 & pp_2[i] != 0, g <- g + 1, g <- g)

  ifelse(pp_1[i] != 0 & pp_2[i] == 0, l <- l + 1, l <- l)

}

 

b_C <- (g + l) / 2 # считаю итоговое значение

 

 

# рассчитываю меру Уилсона и Шмиды

# задаю счётные переменные

g <- 0

l <- 0

 

# начинаю цикл

for(i in 1:length(pp_1)) {

  ifelse(pp_1[i] == 0 & pp_2[i] != 0, g <- g + 1, g <- g)

  ifelse(pp_1[i] != 0 & pp_2[i] == 0, l <- l + 1, l <- l)

}

 

# определяю число видов на каждой точке

S_1 <- length(pp_1) - length(which(pp_1 == 0))

S_2 <- length(pp_2) - length(which(pp_2 == 0))

 

b_WS <- (g + l) / (S_1 + S_2) # считаю итоговое значение

 

 

# рассчитываю меру Уиттекера

S <- 0 # задаю счётную переменную

# начинаю цикл

for(i in 1:length(pp_1)) {

  ifelse(pp_1[i] != 0 | pp_2[i] != 0, S <- S + 1, S <- S)

}

 

# определяю число видов на каждой точке

S_1 <- length(pp_1) - length(which(pp_1 == 0))

S_2 <- length(pp_2) - length(which(pp_2 == 0))

 

b_W <- S / (((S_1 + S_2) / 2) - 1) # считаю итоговое значение

 

# рассчитываю первый вариант меры Ратледжа

# задаю счётные переменные

S <- 0

r <- 0

 

# начинаю цикл

for(i in 1:length(pp_1)) {

  ifelse(pp_1[i] != 0 | pp_2[i] != 0, S <- S + 1, S <- S)

  for(j in 1:length(pp_1)) {

    ifelse(pp_1[i] != 0 & pp_2[j] != 0, r <- r + 1, r <- r)

  }

}

 

b_R1 <- ((S^2) / (2 * r + S)) - 1 # считаю итоговое значение

 

# рассчитываю второй вариант меры Ратледжа

# задаю пустой вектор и счётную переменную

e_vector <- NULL

e <- 0

 

# начинаю цикл для определения e

for(i in 1:length(pp_1)) {

  ifelse(pp_1[i] != 0, e <- e + 1, e <- e)

  ifelse(pp_2[i] != 0, e <- e + 1, e <- e)

  e_vector[i] <- e * log(e)

  e <- 0

}

e_vector <- e_vector[!is.na(e_vector)]

 

# определяю a

a_1 <- length(pp_1) - length(which(pp_1 == 0))

a_2 <- length(pp_2) - length(which(pp_2 == 0))

a <- a_1 * log(a_1) + a_2 * log(a_2)

 

# считаю итог

b_R2 <- log(a_1 + a_2) - 1 / (a_1 + a_2) * sum(e_vector) - 1 / (a_1 + a_2) * a

 

# рассчитываю третий вариант меры Ратледжа

# задаю пустой вектор и счётную переменную

e_vector <- NULL

e <- 0

 

# начинаю цикл для определения e

for(i in 1:length(pp_1)) {

  ifelse(pp_1[i] != 0, e <- e + 1, e <- e)

  ifelse(pp_2[i] != 0, e <- e + 1, e <- e)

  e_vector[i] <- e * log(e)

  e <- 0

}

e_vector <- e_vector[!is.na(e_vector)]

 

# определяю a

a_1 <- length(pp_1) - length(which(pp_1 == 0))

a_2 <- length(pp_2) - length(which(pp_2 == 0))

a <- a_1 * log(a_1) + a_2 * log(a_2)

 

# считаю итог

b_R2 <- log(a_1 + a_2) - 1 / (a_1 + a_2) * sum(e_vector) - 1 / (a_1 + a_2) * a

b_R3 <- exp(b_R2) - 1

Последнее изменение: Пятница, 12 ноября 2021, 10:04