・標本整理
午後
・授業準備
先日の続きで、新しいカテゴリーとして、外来種と在来種を加えて、地点ごとの外来種・在来種ごとの種数を算出する方法。
一発でやる方法は分からず、まどろっこしい方法でどうにかできた。
元データはこんな感じ。
まず、ここに外来種と在来種の情報を加える。
流れとしては、1)種名が書かれている「spe」をコピーして、新しい列「origin」として貼り付ける。そして、2)各種名ごとに外来種(exotic) or 在来種(native)に置換する。
#データが「data_exu」に入ってるとして #install.packages("tidyverse", repos="http://cran.ism.ac.jp/") library(tidyverse) #文字変換に必要 data_exu$origin <- data_exu$spe #「origin」を作成し、そこに「spe」の情報を入れる data_exu$origin <- data_exu$origin %>% str_replace_all(c("Agnara pannuosa"="native", ・・・ "Armadillidium vulgare"="exotic",・・・)) #"置換前"="置換後"
次に、外来種・在来種ごと「origin」に、地点ごと「spe」に種数「n_spe」を算出する。これは先日の方法と同じ。
library(dplyr) spe_site2 <- data_exu %>% group_by(origin, site) %>% summarize(n_spe = n_distinct(spe)) #siteごとに分けて,speのユニークな数. spe_site2 <- data.frame(spe_site2)
で、現在の縦長のデータ(スタック形式)を横長の(アンスタック形式)にすると、欲しかったものが手にはいる。
library(tidyverse) #pivot_widerに必要 spe_site3 <- data.frame(spe_site2 %>% pivot_wider(names_from = origin, values_from = n_spe))上記は「origin」を列名にすると解釈すれば良い。
このように、地点「site」ごとに外来種(exotix)と在来種(native)の種数が算出されている。