d0 <- read.csv(file = 'https://stats.dip.jp/01_ds/data/dirty_data1.csv')
summary(d0) # 要約統計値 NA's:1 (NAが1つ含まれている)
## 会社名 気温 湿度 風速
## Length:22 Min. :12.00 Min. :-50.00 Min. :-1.000
## Class :character 1st Qu.:20.00 1st Qu.: 30.00 1st Qu.: 1.000
## Mode :character Median :32.40 Median : 50.00 Median : 2.000
## Mean :28.18 Mean : 39.73 Mean : 2.052
## 3rd Qu.:34.10 3rd Qu.: 51.00 3rd Qu.: 4.000
## Max. :50.40 Max. : 60.00 Max. : 5.000
## NA's :1 NA's :1
library(DT)
datatable(d0)
d1 <- na.omit(d0)
summary(d1) # 要約統計値 NAがなくなった。
## 会社名 気温 湿度 風速
## Length:20 Min. :12.00 Min. :-50.00 Min. :-1.000
## Class :character 1st Qu.:18.50 1st Qu.: 27.50 1st Qu.: 0.750
## Mode :character Median :32.40 Median : 50.00 Median : 2.000
## Mean :27.97 Mean : 38.55 Mean : 2.105
## 3rd Qu.:34.10 3rd Qu.: 51.00 3rd Qu.: 4.000
## Max. :50.40 Max. : 60.00 Max. : 5.000
datatable(d1)
# 各気象変数の許容範囲に入っているか否かを示す論理式を作成
is.tp <- -20 <= d1$気温 & d1$気温 <= 50
is.hm <- 0 <= d1$湿度 & d1$湿度 <= 100
is.ws <- 0 <= d1$風速 & d1$風速 <= 70
summary(is.tp)
## Mode FALSE TRUE
## logical 2 18
summary(is.hm)
## Mode FALSE TRUE
## logical 1 19
summary(is.ws)
## Mode FALSE TRUE
## logical 1 19
# 適切な範囲のレコードだけを抽出する。
d2 <- d1[is.tp & is.hm & is.ws, ]
datatable(d2)
d3 <- d2
d3$気温 <- round(d2$気温, 1)
d3$湿度 <- round(d2$湿度, 0)
d3$風速 <- round(d2$風速, 0)
datatable(d3)
d3$会社名
## [1] "ソニー" "Sony" "SONY" "sony"
## [5] "ソニー株式会社" "Sony(株)" "ソニー(株)" "sony"
## [9] "富士通" "Fujitsu" "Fujitu" "FUJITSU"
## [13] "富士通株式会社" "富士通(株)" "fujitsu" "FUJITSU"