# install.packages("ISLR")
library(ISLR)
# クレジットカード顧客データ、10000行のサンプル、4変数
Default
# If you cannot find the function “as_tibble”, you must install either the tidyverse package or the tibble package. It will resolve the issue.
library(tidyverse)
# tibble 形のデータフレームに変換する
DEFAULT <- as_tibble(Default)
head(DEFAULT,n=10)
# データフレームの列名の確認
colnames(DEFAULT)
[1] "default" "student" "balance" "income"
# データフレームの列名の確認
str(DEFAULT)
tibble [10,000 × 4] (S3: tbl_df/tbl/data.frame)
$ default: Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
$ student: Factor w/ 2 levels "No","Yes": 1 2 1 1 1 2 1 2 1 1 ...
$ balance: num [1:10000] 730 817 1074 529 786 ...
$ income : num [1:10000] 44362 12106 31767 35704 38463 ...
# 列名変更
colnames(DEFAULT) <- c("d","s","b","i")
colnames(DEFAULT)
[1] "d" "s" "b" "i"
# 列名変更 dyl パッケージ利用
DEFAULT <- rename(DEFAULT, #対象データフレーム,
default = d, # [新列名 = 旧列名] 修正必要な列のみ
student = s)
colnames(DEFAULT)
[1] "default" "student" "b" "i"
変数のタイプは: 1. 量的変数(数量を表す):連続変数(長さ、重さ、時間)、離散変数(件数、個数) 2. カテゴリー変数(質的変数):数量を表すものでない(年代、性別、所属)
よくある変数の型:
データ型 | 記号 | 使用例 |
---|---|---|
数値型 | numeric | 1,1.1,2 |
整数型 | integer |
1,2,3 |
実数型 | double |
1.345 |
文字列型 | character |
“営業部”,“人事部”… |
因子型 | factor |
営業部,人事部… |
論理値型 | logical |
TRUE(1),FALSE(0)… |
日付型 | date |
2020-01-01… |
# Factor、numなどがデータ型です
str(DEFAULT)
tibble [10,000 × 4] (S3: tbl_df/tbl/data.frame)
$ default: Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
$ student: Factor w/ 2 levels "No","Yes": 1 2 1 1 1 2 1 2 1 1 ...
$ b : num [1:10000] 730 817 1074 529 786 ...
$ i : num [1:10000] 44362 12106 31767 35704 38463 ...
# is.xxx(変数):変数型の判断
num <- c(1,2,3)
is.factor(num)
[1] FALSE
# is.xxx(変数):変数型の判断
string_data <- c("1","2","3")
is.character(string_data)
[1] TRUE
setwd("C:/Users/jun.li/OneDrive - UiPath/00.Study/00.DataSciense/R/Udemy")
# idcflDが各データ型の頭文字 integer→i、Date→D
HAKO <- read_csv(file = "testdata.csv",col_types = "iiii",
locale = locale(encoding = "UTF-8"))
HAKO
# データフレーム名$列名 <- as.XXX(データフレーム名$列名)
# XXXがデータ型(numeric,integer,doubleなど)
HAKO$番号<- as.character(HAKO$番号)
str(HAKO)
spc_tbl_ [1,000 × 4] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
$ 番号: chr [1:1000] "1" "2" "3" "4" ...
$ 列A : int [1:1000] 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 ...
$ 列B : int [1:1000] 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 ...
$ 列C : int [1:1000] 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 ...
- attr(*, "spec")=
.. cols(
.. 番号 = col_integer(),
.. 列A = col_integer(),
.. 列B = col_integer(),
.. 列C = col_integer()
.. )
- attr(*, "problems")=<externalptr>
データフレーム$列名で列を抽出できます
head(HAKO$番号,10)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
記号 | 意味 | 使用例 |
---|---|---|
^ | べき乗 | 22,25,2+10^2 |
: | +-1の等差数列 | 1:10,10:-10 |
*,/ | 掛け算、割り算 | 1*2,3-2/6 |
+,- | 足し算、引き算 | 1+2,3-1/2 |
<,<= | 大小比較 | 0<1 |
==,!= | 等しい、等しくない | 1==1,“a”!=“b” |
&, | | かつ、または | 1>0&2>3,1>0|2>3 |
5:-5
[1] 5 4 3 2 1 0 -1 -2 -3 -4 -5
1==1
[1] TRUE
# データフレームのの行数と列数の確認
dim(HAKO)
[1] 1000 4
length(HAKO$番号)
[1] 1000
関数 | 意味 |
---|---|
mean(データフレーム$列名) | 平均 |
median(データフレーム$列名) | 中央値 |
min(データフレーム$列名) | 最小値 |
max(データフレーム$列名) | 最大値 |
sum(データフレーム$列名) | 合計 |
table(データフレーム$列名) | 集計 |
summary(データフレーム) | 各変数の要約 |
# 以前修正した列名を元に戻す
DEFAULT <- rename(DEFAULT, #対象データフレーム,
balance = b, # [新列名 = 旧列名] 修正必要な列のみ
income = i)
#構造確認
#str(DEFAULT)
summary(DEFAULT)
default student balance income
No :9667 No :7056 Min. : 0.0 Min. : 772
Yes: 333 Yes:2944 1st Qu.: 481.7 1st Qu.:21340
Median : 823.6 Median :34553
Mean : 835.4 Mean :33517
3rd Qu.:1166.3 3rd Qu.:43808
Max. :2654.3 Max. :73554
median(DEFAULT$balance)
警告: Unknown or uninitialised column: `balance`.
NULL
table(DEFAULT$student)
No Yes
7056 2944
変数(列)の散布度の確認: 1. var(データフレーム\(列名):不偏分散 2. sd(データフレーム\)列名):標準偏差
var(DEFAULT$income) #不偏分散
[1] 177865955
sd(DEFAULT$income) #標準偏差
[1] 13336.64
# 上記の不偏分散を手動計算
n <- length(DEFAULT$income)
m <- mean(DEFAULT$income)
var <- sum((DEFAULT$income-m)^2) / (n-1)
var
[1] 177865955
c1 <- c(1,2,3)
c2 <- c(2,4)
c3 <- c(7)
c4 <- c(10,20,30)
c1 + c3 #case1
[1] 8 9 10
c1 * c4 #case2
[1] 10 40 90
c1 + c2 #case3
警告: longer object length is not a multiple of shorter object length
[1] 3 6 5