31  関数(実際に使ってみよう)(L35)

ここまで解説してきた関数を少し復習しておきましょう

関数
型の変換 as.numeric()
as.character()
ベクトル c()
データフレーム data.frame()
View()
パッケージ install.packages()
library()
関数 sum()

8個もすでに解説していますね。

今回、使う関数は、sum(), summary(), unique(),sort()です。 新しい関数、summaryとuniqueとsort、一度動画をとめて、 ご自身の手でどんな動作をするかをヘルプファイルを みて確認してみてください。

できましたか?

?summary

のヘルプファイルを呼び出してExamplesの内容を確認してみましょう

Examples

ここで

head(attenu)
  event mag station dist accel
1     1 7.0     117   12 0.359
2     2 7.4    1083  148 0.014
3     2 7.4    1095   42 0.196
4     2 7.4     283   85 0.135
5     2 7.4     135  107 0.062
6     2 7.4     475  109 0.054
#は、Rに最初から組み込まれているデータです。
summary(attenu, digits = 4) #-> summary.data.frame(...), default precision
     event            mag           station         dist       
 Min.   : 1.00   Min.   :5.000   117    :  5   Min.   :  0.50  
 1st Qu.: 9.00   1st Qu.:5.300   1028   :  4   1st Qu.: 11.32  
 Median :18.00   Median :6.100   113    :  4   Median : 23.40  
 Mean   :14.74   Mean   :6.084   112    :  3   Mean   : 45.60  
 3rd Qu.:20.00   3rd Qu.:6.600   135    :  3   3rd Qu.: 47.55  
 Max.   :23.00   Max.   :7.700   (Other):147   Max.   :370.00  
                                 NA's   : 16                   
     accel        
 Min.   :0.00300  
 1st Qu.:0.04425  
 Median :0.11300  
 Mean   :0.15422  
 3rd Qu.:0.21925  
 Max.   :0.81000  
                  
summary(attenu $ station, maxsum = 20) #-> summary.factor(...)
    117    1028     113     112     135     475    1030    1083    1093    1095 
      5       4       4       3       3       3       2       2       2       2 
    111     116    1219    1299     130    1308    1377    1383 (Other)    NA's 
      2       2       2       2       2       2       2       2     120      16 
lst <- unclass(attenu$station) > 20 # logical with NAs
## summary.default() for logicals -- different from *.factor:
summary(lst)
   Mode   FALSE    TRUE    NA's 
logical      28     138      16 
summary(as.factor(lst))
FALSE  TRUE  NA's 
   28   138    16 

現時点ではわかりにくいものがいくつかあると思いますが、 コースの中で解説していきますので心配ありません。

とりあえず、Examplesの内容からは、

summary(attenu)
     event            mag           station         dist       
 Min.   : 1.00   Min.   :5.000   117    :  5   Min.   :  0.50  
 1st Qu.: 9.00   1st Qu.:5.300   1028   :  4   1st Qu.: 11.32  
 Median :18.00   Median :6.100   113    :  4   Median : 23.40  
 Mean   :14.74   Mean   :6.084   112    :  3   Mean   : 45.60  
 3rd Qu.:20.00   3rd Qu.:6.600   135    :  3   3rd Qu.: 47.55  
 Max.   :23.00   Max.   :7.700   (Other):147   Max.   :370.00  
                                 NA's   : 16                   
     accel        
 Min.   :0.00300  
 1st Qu.:0.04425  
 Median :0.11300  
 Mean   :0.15422  
 3rd Qu.:0.21925  
 Max.   :0.81000  
                  

とすることで、データフレームやベクトルを集計してくれる 関数だということがなんとなくわかると思います。

unique関数もみていきましょう

?unique
x <- c(3:5, 11:8, 8 + 0:5)
x
 [1]  3  4  5 11 10  9  8  8  9 10 11 12 13
(ux <- unique(x))
[1]  3  4  5 11 10  9  8 12 13
(u2 <- unique(x, fromLast = TRUE)) # different order
[1]  3  4  5  8  9 10 11 12 13
stopifnot(identical(sort(ux), sort(u2)))

length(unique(sample(100, 100, replace = TRUE)))
[1] 57
## approximately 100(1 - 1/e) = 63.21

head(unique(iris))
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

unique関数は、ちょっと例がわかりづらいですが、

vec <- c(1,1,1,1,1,3,3,3,3,3,2,2,2,2,2)
unique(vec)
[1] 1 3 2

こんな感じでベクトルの中から重複をなくして 「ユニーク」な要素をもつベクトルを作ってくれる という関数です。

最後に、

?sort

これも、ヘルプファイルが難しいですね。 単純に、入れたベクトルの順番を昇順・降順に並び替えてくれる 関数です。

vec
 [1] 1 1 1 1 1 3 3 3 3 3 2 2 2 2 2
unique(vec)
[1] 1 3 2
sort(unique(vec))
[1] 1 2 3

こんな感じで、先ほど作成したvecをユニークにしたもの の順番をソートしてくれます。

ヘルプファイルを見ていきましょう

?sort

Usageのところの一番上の使い方として、 sort(x, decreasing = FALSE, ...)とあります。decreasingのargumentには初期値が 与えられていて、 decreasingの説明をみると、 logical. Should the sort be increasing or decreasing?とあります。 logicalなので、TRUEかFALSEをいれられます。

初期値のFALSEではない値にしてみましょう。

sort(unique(vec), decreasing=FALSE)
[1] 1 2 3
sort(unique(vec), decreasing=TRUE)
[1] 3 2 1

と、こんな具合で順番が入れ替わりました。

いかがでしょうか?関数のヘルプファイルをみて、 その関数の使い方を理解することが、なんとなくできそうに 感じていただいていれば、OKです。

それでは、本セクションのまとめを次の動画でしてから、 次のセクションにすすんでいきましょう。