勉強会(2018/3/13,14)のおさらい

# おさらい

## まず、入っているパッケージの一覧
```{r}
devtools::session_info()
```
で得られます。そのためには{devtools}をインストールしてください

# データの型や変数、等の確認
```{r}
View(iris)
summary(iris)
str(iris)
```
勉強会でやったように、統計量や変数の型などが分かります。data.frameではView()でエクセルのようなシートがみられます。

# dplyr

### filter()
```{r}
iris %>% 
  dplyr::filter(Sepal.Length < 6) %>% 
  print()
```
で条件に合う**行**の抽出をします。

### 比較演算子
```{r}
iris %>% 
  dplyr::filter(Sepal.Length < 6 & Petal.Length <= 2) %>% 
  print()
```
こんな感じで& | や<,>,<=,>=,==,!=などで比較します。

### select
```{r}
iris %>% 
  dplyr::select(.,contains("Sepal")) %>% 
  print()
```
で条件に合う**列**の抽出

### selectのヘルパー関数
```{r}
iris %>% 
  dplyr::select(.,contains("Width")) %>% 
  print()
```
他にもends_with(),everything(),num_range(),one_of(),starts_with()等々いろいろあるので,  
チートシート見てよろしく

### 行の順序を変更
昇順

```{r}
iris %>% 
  dplyr::arrange(.,Sepal.Length) %>%
  print()

```
 降順

```{r}
iris %>% 
  dplyr::arrange(.,desc(Sepal.Length)) %>%
  print()
```

### 新しい列の追加dplyr::mutate()
Sepal.LengthとSepal.Widthの比(長さと幅の比)を追加しよう。Petalも

```{r}
iris %>% 
  mutate(Sepal_ratio = Sepal.Length/Sepal.Width,
         Petal_ratio = Petal.Length/Petal.Width) %>%
  print()
```

### Species(品種)ごとに要約しよう！！
group_by()が重要です。

```{r,echo=TRUE}
iris %>% 
  dplyr::group_by(Species) %>% 
  summarise_all(.,funs(mean,max,min))  %>%
  print()

```
summariseには min max median sd var IQRとかあるよ

## 他にもまだまだたくさんあります
正直、自分は使うものだけ覚えればいいと思うのでどんどん使ってみてください！！

## パイプ演算子%>%について
%>%についてはいろいろな記事が概出なのでそちらを参考にしてください。
処理の後にprint()を入れるとその都度の結果を返してくれるので、慣れないうちは使うと便利です

# ggplot2

## ヒストグラムgeom_histgram()

```{r}
iris %$% 
  ggplot(.,aes(x = Sepal.Length,fill = Species)) +
  geom_histogram()
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/d47804d2-1b28-6200-80f6-e5fc4cb6de51.png)

## Species毎のヒストグラムはfacetを使う
```{r}
iris %$% 
  ggplot(.,aes(x = Sepal.Length,fill = Species)) +
  geom_histogram() +
  facet_wrap(~Species)
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/d5ccf808-a90a-4638-fa3a-7f60746005f2.png)

## 縦軸はcountじゃなくてfrequencyがいい！！
ylab()で変更可能(xlab()でx軸)

```{r}
iris %$% 
  ggplot(.,aes(x = Sepal.Length,fill = Species)) +
  geom_histogram() +
  facet_wrap(~Species) +
  ylab("frequency")
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/e49ce878-6fbf-d94c-c5a0-f03fa251980e.png)

## 散布図geom_point()

```{r}
iris %$%
  ggplot(.,aes(x = Sepal.Length,y = Sepal.Width,colour = Species)) +
  geom_point(size = rel(1.5))
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/aa51ee2b-2e20-9095-a366-0f2c15311b0f.png)

## 各Speciesの散布図+回帰線(geom_smooth())

```{r}
iris %$%
  ggplot(.,aes(x = Sepal.Length,y = Sepal.Width,group = Species)) +
  geom_point(aes(colour = Species)) +
  geom_smooth(method = "lm",colour = "black",size = rel(0.6)) +
  facet_wrap(~Species)

```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/c123decb-f6de-a85c-197a-fc99a80a29fe.png)

## Stat_summary()
fun.y()で縦軸の統計量を決める

```{r,echo=TRUE}
diamonds %$%
  ggplot(.,aes(x = cut, y = price)) + 
  stat_summary(fun.y = mean, geom = "bar")
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/a2e6b0f3-e5f3-1503-c0a9-05b0bc72adb5.png)

## position = "dodge" でよけて色を付けると

```{r,echo=TRUE,eval=FALSE}
diamonds %$% 
  ggplot(.,aes(x = cut, y = price, fill = clarity)) +
  stat_summary(fun.y = mean, geom = "bar", position = "dodge")

```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/6215de26-43dc-3e5b-0893-214dbc4ccedb.png)

## もっと！！cut毎のpriceの平均値をclarityとダイアモンドのcolorごとに！！！
```{r}
diamonds %$% 
  ggplot(.,aes(x = cut, y = price, fill = cut)) +
  stat_summary(fun.y = mean, geom = "bar") +
  ylab("price_maen") +
  facet_grid(clarity~color) +
  theme(axis.text.x = element_text(angle = 90,hjust = 1,vjust = 0.5))
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/470d0862-bbcc-3ba0-0edb-03ad8fed6afd.png)

## 箱ひげ図geom_boxplot()
平均値を白抜けのひし形で表示

```{r}
iris %$% 
  ggplot(.,aes(x = Species, y = Sepal.Length)) +
  geom_boxplot() +
  geom_jitter(position = position_jitter(),aes(colour = Species)) +
  stat_summary(fun.y = "mean",geom = "point", shape = 23, size = 3, fill = "white")

```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/244727/4c13fa61-b96c-5c3e-e3ad-197cd8584c1e.png)



あまりきれいな図ではなくてごめんなさい。僕も頑張って綺麗な図を作れるように頑張ります。

# 最後に
大学卒業後もRをどんどん使う予定なのでよろしくお願いします。
初めての投稿なのでこれくらいでご容赦ください
ありがとうございました。

# **enjoy!!**