6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rで農薬検索をする[準備編]

Last updated at Posted at 2017-04-18

急に畑のナスにアブラムシが湧いた!農薬は何を使えばいいんだ!!!

そんなときもRがあれば大丈夫。

とりあえず今回はデータの支度を。

お約束

実際の登録内容が絶対です。

!!農薬は有効期限内のものをラベルの記載内容を守って使用しましょう!!

※なお、Windows向けですがACFinderという素晴らしいソフトがあるのでRなど使用せずそちらを利用するのがおすすめです(農薬登録情報検索クライアント ACFinder)

使用したパッケージ

library(magrittr)
library(dplyr)
library(data.table)
library(dtplyr)
library(RUnicode)
library(readr)
library(stringr) # 次回つかいます

RUnicodeの使用にあたってはICUライブラリのインストールも必要なので別途用意しておく。(cf. abicky/RUnicode: R package to proceed Unicode characters)

ちなみにRUnicodeのインストールの時、

エラー: Could not find build tools necessary to build RUnicode

と怒られてうまく行かなかったが、

options(buildtools.check = function(action) TRUE)

とやったらうまく行った。理由は良く理解していない(cf. xcode - Error: "Could not find build tools necessary to build stringi" when trying devtools::install_github() - Stack Overflow)。

ファイルの入手

ダウンロード

農薬の登録情報はFAMICで公開されているものを使用するので、予め注意事項を確認しておきましょう(要確認: 農薬登録情報ダウンロードの説明 - 独立行政法人農林水産消費安全技術センター(FAMIC))。

事前にchem_dataディレクトリを作業ディレクトリ内に準備しておく。

ダウンロードはdownload.file()にURLと保存先を教えればやってくれる。

## 登録情報ダウンロード
# set url
kihon_url <- "http://www.acis.famic.go.jp/ddata/datacsv/H2904120.zip"
tekiyo1_url <- "http://www.acis.famic.go.jp/ddata/datacsv/H2904121.zip"
tekiyo2_url <- "http://www.acis.famic.go.jp/ddata/datacsv/H2904122.zip"
# download file
download.file(kihon_url, "chem_data/kihon.zip")
download.file(tekiyo1_url, "chem_data/tekiyo1.zip")
download.file(tekiyo2_url, "chem_data/tekiyo2.zip")
rm(kihon_url, tekiyo1_url, tekiyo2_url)

ダウンロード元のURLはおそらく登録情報が更新されると変更となるので注意。

解凍

解凍はunzip()。ファイルへのパスが返ってくるので、これを受け取ればついでにリネームができる。農薬登録情報のファイル名は更新ごとに変更されている様子なので、適当にリネームしておいたほうが良いだろう。リネームはfile.rename()

tmp <- unzip("chem_data/kihon.zip", exdir = "chem_data")
file.rename(tmp, "chem_data/kihon.csv")
tmp <- unzip("chem_data/tekiyo1.zip", exdir = "chem_data")
file.rename(tmp, "chem_data/tekiyo1.csv")
tmp <- unzip("chem_data/tekiyo2.zip", exdir = "chem_data")
file.rename(tmp, "chem_data/tekiyo2.csv")
rm(tmp)

データの読み込みと前処理

データ読み込み

Shift_JISなのでencodingの指定をしないと文字化けする場合がある。
read_csvが早いよみたいな話を聞いてやろうとしたら若干ハマった。read_csvでencodingを指定するにはlocale=locale(encoding="CP932")のようにやるそうだ。

あと列名に丸数字が入ってて後々面倒なことになりそうなので早めに潰しておいたほうがいい。

kihon <- read_csv("chem_data/kihon.csv", locale=locale(encoding="CP932"))
tekiyo1 <- read_csv("chem_data/tekiyo1.csv", locale=locale(encoding="CP932"))
tekiyo2 <- read_csv("chem_data/tekiyo2.csv", locale=locale(encoding="CP932"))
tekiyo <- rbind(tekiyo1, tekiyo2)
rm(tekiyo1, tekiyo2)
names(tekiyo)[21:25] <- paste0("有効成分", 1:5, "を含む農薬含む農薬の総使用回数")

Unicode正規化

半角カナとか㍑とか入ってて後々アレっぽいのでこれも潰しておく。

RUnicodeべんり。%<>%べんり。

kihon %<>% mutate_if(is.character, unormalize)
tekiyo %<>% mutate_if(is.character, unormalize)

ついでに登録基本部を適用表にくっつけておく。left_joinby=を省略すると適当に空気読んでアレしてくれてよい。

chemicals <- left_join(tekiyo, kihon)

準備は整った

これで支度は整いましたが、たいへんなのはこれからです。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?