R を Ubuntu でインストールして csv からグラフを書く

# 環境

- Ubuntu 22.04
- Ubuntu パッケージ版 R 
  - Ver.4.1.2 

# 公式パッケージを調べる

2023/12/16現在、最新のリリースは4.3.2だそうです。
https://www.r-project.org/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/170603ee-fb71-6ba9-f258-bc204aab2194.png)

R のインストールについては、 「cran」なるところにアクセスするのだそうだ。

https://cran.r-project.org/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/a4a76bca-ce3a-db46-b154-26257e1a1aea.png)

Ubunuの場合は以下のようにするそうだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e6c80524-8abe-f352-9a92-1c351fc7d342.png)

しかしながら、今回は Ubuntu パッケージ版を使用していきます。


# Ubunut パッケージ版をインストール

R の基本パッケージをインストールします。

```
$ sudo apt install r-base
以下の追加パッケージがインストールされます:
  bzip2-doc gfortran gfortran-11 icu-devtools libblas-dev libbz2-dev
  libgfortran-11-dev libicu-dev liblapack-dev libreadline-dev r-base-core
  r-base-dev r-base-html r-cran-boot r-cran-class r-cran-cluster
  r-cran-codetools r-cran-foreign r-cran-kernsmooth r-cran-lattice r-cran-mass
  r-cran-matrix r-cran-mgcv r-cran-nlme r-cran-nnet r-cran-rpart
  r-cran-spatial r-cran-survival r-doc-html r-recommended
提案パッケージ:
  gfortran-multilib gfortran-doc gfortran-11-multilib gfortran-11-doc
  libcoarrays-dev liblapack-doc icu-doc readline-doc elpa-ess r-doc-info
  | r-doc-pdf r-mathlib texlive-fonts-extra texlive-latex-extra
以下のパッケージが新たにインストールされます:
  bzip2-doc gfortran gfortran-11 icu-devtools libblas-dev libbz2-dev
  libgfortran-11-dev libicu-dev liblapack-dev libreadline-dev r-base
  r-base-core r-base-dev r-base-html r-cran-boot r-cran-class r-cran-cluster
  r-cran-codetools r-cran-foreign r-cran-kernsmooth r-cran-lattice r-cran-mass
  r-cran-matrix r-cran-mgcv r-cran-nlme r-cran-nnet r-cran-rpart
  r-cran-spatial r-cran-survival r-doc-html r-recommended
アップグレード: 0 個、新規インストール: 31 個、削除: 0 個、保留: 80 個。
77.3 MB のアーカイブを取得する必要があります。
この操作後に追加で 184 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
```
結構ありますね

# 起動
```
$ R
```
とすると
```
R version 4.1.2 (2021-11-01) -- "Bird Hippie"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。 
一定の条件に従えば、自由にこれを再配布することができます。 
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 

R は多くの貢献者による共同プロジェクトです。 
詳しくは 'contributors()' と入力してください。 
また、R や R のパッケージを出版物で引用する際の形式については 
'citation()' と入力してください。 

'demo()' と入力すればデモをみることができます。 
'help()' とすればオンラインヘルプが出ます。 
'help.start()' で HTML ブラウザによるヘルプがみられます。 
'q()' と入力すれば R を終了します。 

> 
```
となりました。

バージョンは 4.1.2 です。公式でリリースされたのは 2021-11-01 頃のものです。

# dplyr パッケージをインストールする

時間のデータを扱うのに以下のパッケージをインストールします。
```
$ sudo apt install dplyr
```
とすると

```
以下の追加パッケージがインストールされます:
  fonts-font-awesome fonts-glyphicons-halflings fonts-mathjax
  libcmark-gfm-extensions0.29.0.gfm.3 libcmark-gfm0.29.0.gfm.3 libjs-bootstrap
  libjs-d3 libjs-es5-shim libjs-highlight.js libjs-jquery-datatables
  libjs-jquery-datatables-extensions libjs-jquery-selectize.js libjs-json
  libjs-mathjax libjs-microplugin.js libjs-modernizr libjs-prettify
  libjs-sifter.js libjs-twitter-bootstrap-datepicker libnlopt0 libnode72
.
.
.
r-cran-webutils r-cran-withr r-cran-wk r-cran-wkutils r-cran-xfun r-cran-xml
  r-cran-xml2 r-cran-xtable r-cran-xts r-cran-yaml r-cran-zoo
  ttf-bitstream-vera
提案パッケージ:
  fonts-mathjax-extras fonts-stix libjs-mathjax-doc npm texlive-xetex
  pandoc-citeproc texlive-latex-extra context wkhtmltopdf librsvg2-bin groff
  ghc python libjs-katex citation-style-language-styles r-cran-forcats
  r-cran-ggbeeswarm r-cran-ggridges r-cran-roxygen2 r-cran-aer r-cran-bbmle
  r-cran-car r-cran-cmprsk r-cran-coda r-cran-emmeans r-cran-epir r-cran-gam
  r-cran-gee r-cran-geepack r-cran-glmnet r-cran-gmm r-cran-irlba
  r-cran-lavaan r-cran-leaps r-cran-lmtest r-cran-lsmeans r-cran-metafor
  r-cran-network r-cran-ordinal r-c
.
.
.
r-cran-vdiffr r-cran-viridis r-cran-viridislite r-cran-waldo r-cran-warp
  r-cran-webutils r-cran-withr r-cran-wk r-cran-wkutils r-cran-xfun r-cran-xml
  r-cran-xml2 r-cran-xtable r-cran-xts r-cran-yaml r-cran-zoo
  ttf-bitstream-vera
アップグレード: 0 個、新規インストール: 306 個、削除: 0 個、保留: 80 個。
262 MB のアーカイブを取得する必要があります。
この操作後に追加で 624 MB のディスク容量が消費されます。
続行しますか? [Y/n]
```
うー、インストール処理を軽くしたいのでUbunutパッケージを使うことにしたのですが、これは仕方ないですね・・・・

# R で csv から グラフを作る

## 元データ

このようなものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/4d797882-93cc-ca63-001a-c174fdccda60.png)
a


これを csv としてダウンロードすると以下のようになります。


```
,,,,,
測定者,@nanbuwks ,,,,
測定器,エステー エアカウンター,,,,
型番,校正番号 040008B0,,,,
測定方法,電源ON→5分静置→値読み取り,,,,
備考,一般家庭屋内 、2階、パソコンデスク上(床上110cm),,,,
,,,,,
,,,,,
,,,,,
場所,緯度経度,測定日時,測定値,単位,備考
東京都足立区,"35.80602760722601, 139.78767228418732",2023-08-24 10:15,0.05,μSV/h,
,,2023-08-12 15:12,0.05,,
,,2023-07-31 14:10,0.07,,
,,2023-07-30 15:58,0.05,,
,,2023-07-29 15:55,0.07,,
,,2023-07-28 18:25,0.09,,
,,2023-07-27 22:0,0.05,,
,,2023-07-21 11:55,0.1,,
,,2023-07-15 11:20,0.05,,
,,2023-07-14 22:5,0.1,,
,,2023-07-12 10:51,0.05,,
,,2023-07-11 23:24,0.09,,
.
.
.
```

まず、下準備として測定データ部分のみ取り出します。

 tail +10 test3.csv | head -100 > test3-100.csv

これで、最新100件の測定データが得られました。

## R にロード

まずは特に何も考えずに読み込みます。
```
> data <- read.csv("test3-100.csv")
> str(data)
'data.frame':	18 obs. of  6 variables:
 $ 場所    : chr  "東京都足立区" "" "" "" ...
 $ 緯度経度: chr  "35.80602760722601, 139.78767228418732" "" "" "" ...
 $ 測定日時: chr  "2023-08-24 10:15" "2023-08-12 15:12" "2023-07-31 14:10" "2023-07-30 15:58" ...
 $ 測定値  : num  0.05 0.05 0.07 0.05 0.07 0.09 0.05 0.1 0.05 0.1 ...
 $ 単位    : chr  "μSV/h" "" "" "" ...
 $ 備考    : logi  NA NA NA NA NA NA ...

```
測定日時のデータ型が chr となっているので、時間型に変換します。


```
> data <- dplyr::mutate(data, 測定日時 = as.POSIXct(測定日時,tz="Asia/Tokyo"))
> str(data)
'data.frame':	18 obs. of  6 variables:
 $ 場所    : chr  "東京都足立区" "" "" "" ...
 $ 緯度経度: chr  "35.80602760722601, 139.78767228418732" "" "" "" ...
 $ 測定日時: POSIXct, format: "2023-08-24 10:15:00" "2023-08-12 15:12:00" ...
 $ 測定値  : num  0.05 0.05 0.07 0.05 0.07 0.09 0.05 0.1 0.05 0.1 ...
 $ 単位    : chr  "μSV/h" "" "" "" ...
 $ 備考    : logi  NA NA NA NA NA NA ...
```
上記の処理はこちらを参考にさせていただきました。
https://mom-neuroscience.com/r-datatype/

# グラフ化する

```
 > plot(data[[3]],data[[4]],xlab="Test",ylab="Test2",type="l")
```
としたら

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e560ad4d-0c05-9013-52c9-4a7e416743c6.png)

となります。