library(readxl)
xlsdata <- read_excel("C:/Users/DaBin/Desktop/R/DATA/혼자 공부하는 R 데이터 분석/선별진료소.xls")
View(xlsdata)
data_raw <- xlsdata[,c(2:5)] #2-5열의 모든 행 선책
names(data_raw) <- c('state','city','name','addr')
names(data_raw)
## [1] "state" "city" "name" "addr"
table(data_raw$state)
##
## 강원 경기 경남 경북 광주 대구 대전 부산 서울 세종 울산 인천 전남 전북 제주 충남
## 34 88 55 41 9 17 10 30 45 1 7 26 50 25 13 30
## 충북
## 25
barplot(table(data_raw$state))
count 함수로 범주형 데이터 level 확인하기library(dplyr)
##
## 다음의 패키지를 부착합니다: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data_raw %>% count(city)
## # A tibble: 208 × 2
## city n
## <chr> <int>
## 1 가평군 2
## 2 강남구 4
## 3 강동구 1
## 4 강릉시 5
## 5 강북구 1
## 6 강서구 3
## 7 강진군 1
## 8 강화군 2
## 9 거제시 4
## 10 거창군 2
## # ℹ 198 more rows
daejeon_data <- data_raw[data_raw$state == '대전',]
head(daejeon_data)
## # A tibble: 6 × 4
## state city name addr
## <chr> <chr> <chr> <chr>
## 1 대전 대덕구 대덕구보건소 대전 대덕구 석봉로38번길55 (…
## 2 대전 대덕구 근로복지공단 대전병원 대덕구 계족로 637
## 3 대전 동구 대전광역시 동구보건소 대전광역시 동구 가오동 425
## 4 대전 동구 대전한국병원 대전광역시 동구 동서대로 1672
## 5 대전 서구 대전광역시 서구보건소(관저보건지소) 대전 서구 구봉산북로 300
## 6 대전 서구 건양대학교병원 대전 서구 관저동로 158
nrow(daejeon_data)
## [1] 10
mutate_geocode : 데이터 프레임에서 주소가 있는 열
전체를 가져와야 할 때mutate_geocode(data = 데이터 프레임명, location = 주소가 적힌 열의 이름, source = 'google')
library(ggmap)
## 필요한 패키지를 로딩중입니다: ggplot2
## ℹ Google's Terms of Service: ]8;;https://mapsplatform.google.com<https://mapsplatform.google.com>]8;;
## ℹ Please cite ggmap if you use it! Use `citation("ggmap")` for details.
ggmap_key <- "AIzaSyAAM29AgTHbBUJC1kw1IF4RJQcKxYprJBs"
register_google(ggmap_key)
daejeon_data <- mutate_geocode(data = daejeon_data, location = addr, source = 'google')
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EB%8C%80%EB%8D%95%EA%B5%AC+%EC%84%9D%EB%B4%89%EB%A1%9C38%EB%B2%88%EA%B8%B855+(%EC%84%9D%EB%B4%89%EB%8F%99)&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EB%8C%80%EB%8D%95%EA%B5%AC+%EC%84%9D%EB%B4%89%EB%A1%9C38%EB%B2%88%EA%B8%B855+(%EC%84%9D%EB%B4%89%EB%8F%99)&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EB%8D%95%EA%B5%AC+%EA%B3%84%EC%A1%B1%EB%A1%9C+637&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EB%8D%95%EA%B5%AC+%EA%B3%84%EC%A1%B1%EB%A1%9C+637&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84%EA%B4%91%EC%97%AD%EC%8B%9C+%EB%8F%99%EA%B5%AC+%EA%B0%80%EC%98%A4%EB%8F%99+425&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84%EA%B4%91%EC%97%AD%EC%8B%9C+%EB%8F%99%EA%B5%AC+%EA%B0%80%EC%98%A4%EB%8F%99+425&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84%EA%B4%91%EC%97%AD%EC%8B%9C+%EB%8F%99%EA%B5%AC+%EB%8F%99%EC%84%9C%EB%8C%80%EB%A1%9C+1672&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84%EA%B4%91%EC%97%AD%EC%8B%9C+%EB%8F%99%EA%B5%AC+%EB%8F%99%EC%84%9C%EB%8C%80%EB%A1%9C+1672&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%84%9C%EA%B5%AC+%EA%B5%AC%EB%B4%89%EC%82%B0%EB%B6%81%EB%A1%9C+300&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%84%9C%EA%B5%AC+%EA%B5%AC%EB%B4%89%EC%82%B0%EB%B6%81%EB%A1%9C+300&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%84%9C%EA%B5%AC+%EA%B4%80%EC%A0%80%EB%8F%99%EB%A1%9C+158&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%84%9C%EA%B5%AC+%EA%B4%80%EC%A0%80%EB%8F%99%EB%A1%9C+158&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%A4%91%EA%B5%AC+%EB%BF%8C%EB%A6%AC%EA%B3%B5%EC%9B%90%EB%A1%9C+47(%EC%95%88%EC%98%81%EB%8F%99)&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%A4%91%EA%B5%AC+%EB%BF%8C%EB%A6%AC%EA%B3%B5%EC%9B%90%EB%A1%9C+47(%EC%95%88%EC%98%81%EB%8F%99)&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84%EA%B4%91%EC%97%AD%EC%8B%9C+%EC%A4%91%EA%B5%AC+%EB%AA%A9%EC%A4%91%EB%A1%9C+29+%EB%8C%80%EC%A0%84%EC%84%A0%EB%B3%91%EC%9B%90&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84%EA%B4%91%EC%97%AD%EC%8B%9C+%EC%A4%91%EA%B5%AC+%EB%AA%A9%EC%A4%91%EB%A1%9C+29+%EB%8C%80%EC%A0%84%EC%84%A0%EB%B3%91%EC%9B%90&key=xxx]8;;>
## Warning: "대전광역시 중구 목중로 29 대..." not uniquely geocoded, using "29 mokjung-ro,
## jung-gu, daejeon, south korea"
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%9C%A0%EC%84%B1%EA%B5%AC+%EB%85%B8%EC%9D%80%EB%8F%99+270+%EC%9B%94%EB%93%9C%EC%BB%B5%EB%B3%B4%EC%A1%B0%EA%B2%BD%EA%B8%B0%EC%9E%A5+P2%EC%A3%BC%EC%B0%A8%EC%9E%A5&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84+%EC%9C%A0%EC%84%B1%EA%B5%AC+%EB%85%B8%EC%9D%80%EB%8F%99+270+%EC%9B%94%EB%93%9C%EC%BB%B5%EB%B3%B4%EC%A1%B0%EA%B2%BD%EA%B8%B0%EC%9E%A5+P2%EC%A3%BC%EC%B0%A8%EC%9E%A5&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%B6%81%EC%9C%A0%EC%84%B1%EB%8C%80%EB%A1%9C93&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%B6%81%EC%9C%A0%EC%84%B1%EB%8C%80%EB%A1%9C93&key=xxx]8;;>
head(daejeon_data)
## # A tibble: 6 × 6
## state city name addr lon lat
## <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 대전 대덕구 대덕구보건소 대전 대덕구 석봉… 127. 36.4
## 2 대전 대덕구 근로복지공단 대전병원 대덕구 계족로 637 127. 36.4
## 3 대전 동구 대전광역시 동구보건소 대전광역시 동구 … 127. 36.3
## 4 대전 동구 대전한국병원 대전광역시 동구 … 127. 36.3
## 5 대전 서구 대전광역시 서구보건소(관저보건지소) 대전 서구 구봉산… 127. 36.3
## 6 대전 서구 건양대학교병원 대전 서구 관저동… 127. 36.3
head(daejeon_data$lon)
## [1] 127.4263 127.4285 127.4548 127.4358 127.3449 127.3432
daejeon_map <- get_googlemap('대전', maptype = 'roadmap', zoom = 11)
## ℹ <]8;;https://maps.googleapis.com/maps/api/staticmap?center=%EB%8C%80%EC%A0%84&zoom=11&size=640x640&scale=2&maptype=roadmap&key=xxxhttps://maps.googleapis.com/maps/api/staticmap?center=%EB%8C%80%EC%A0%84&zoom=11&size=640x640&scale=2&maptype=roadmap&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84&key=xxx]8;;>
ggmap(daejeon_map) + geom_point(data = daejeon_data, aes(x = lon, y = lat,color = factor(name)),size = 3)
daejeon_data_marker <- data.frame(daejeon_data$lon, daejeon_data$lat)
daejeon_map <- get_googlemap('대전', maptype = 'roadmap', zoom = 11, markers = daejeon_data_marker)
## ℹ <]8;;https://maps.googleapis.com/maps/api/staticmap?center=%EB%8C%80%EC%A0%84&zoom=11&size=640x640&scale=2&maptype=roadmap&markers=36.444898,127.426283|36.368576,127.4285|36.311876,127.454828|36.348317,127.435754|36.301099,127.344941|36.306927,127.343156|36.285379,127.383095|36.335997,127.410148|36.364563,127.324194|36.375126,127.3249&key=xxxhttps://maps.googleapis.com/maps/api/staticmap?center=%EB%8C%80%EC%A0%84&zoom=11&size=640x640&scale=2&maptype=roadmap&markers=36.444898,127.426283|36.368576,127.4285|36.311876,127.454828|36.348317,127.435754|36.301099,127.344941|36.306927,127.343156|36.285379,127.383095|36.335997,127.410148|36.364563,127.324194|36.375126,127.3249&key=xxx]8;;>
## ℹ <]8;;https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84&key=xxxhttps://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EC%A0%84&key=xxx]8;;>
ggmap(daejeon_map) + geom_text(data = daejeon_data, aes(x = lon, y = lat), size = 3, label = daejeon_data$name)
library(readxl)
dustdata <- read_excel("C:/Users/DaBin/Desktop/R/DATA/혼자 공부하는 R 데이터 분석/dustdata.xlsx")
str(dustdata)
## tibble [31 × 27] (S3: tbl_df/tbl/data.frame)
## $ 날짜 : POSIXct[1:31], format: "2021-01-01" "2021-01-02" ...
## $ 서울시 평균: num [1:31] 25 31 36 37 27 23 33 19 24 31 ...
## $ 강남구 : num [1:31] 22 27 30 33 22 20 31 16 21 27 ...
## $ 강동구 : num [1:31] 30 36 42 45 29 29 34 23 29 35 ...
## $ 강북구 : num [1:31] 33 40 45 44 30 28 32 25 33 41 ...
## $ 강서구 : num [1:31] 25 22 38 42 26 26 29 20 25 32 ...
## $ 관악구 : num [1:31] 21 27 31 27 26 18 25 16 20 25 ...
## $ 광진구 : num [1:31] 25 29 35 34 23 23 29 17 24 31 ...
## $ 구로구 : num [1:31] 24 33 37 39 30 NA 26 16 21 31 ...
## $ 금천구 : num [1:31] 28 34 41 35 29 24 30 21 26 34 ...
## $ 노원구 : num [1:31] 29 35 40 40 32 27 35 22 30 35 ...
## $ 도봉구 : num [1:31] 22 29 30 33 20 9 25 13 20 26 ...
## $ 동대문구 : num [1:31] 23 27 30 33 27 20 31 16 21 29 ...
## $ 동작구 : num [1:31] 26 35 39 36 29 26 32 23 28 35 ...
## $ 마포구 : num [1:31] 22 27 31 32 22 20 33 19 22 28 ...
## $ 서대문구 : num [1:31] 25 26 36 28 19 17 30 13 NA 26 ...
## $ 서초구 : num [1:31] 22 32 30 35 32 26 30 18 23 30 ...
## $ 성동구 : num [1:31] 22 27 30 34 23 21 33 17 22 28 ...
## $ 성북구 : num [1:31] 24 28 31 35 36 17 41 12 21 27 ...
## $ 송파구 : num [1:31] 21 30 34 37 22 22 33 NA 21 26 ...
## $ 양천구 : num [1:31] 27 22 38 41 29 26 30 22 27 34 ...
## $ 영등포구 : num [1:31] 23 26 30 32 25 20 23 17 21 27 ...
## $ 용산구 : num [1:31] 32 44 46 47 33 33 46 30 34 43 ...
## $ 은평구 : num [1:31] 22 32 31 31 32 21 43 17 21 25 ...
## $ 종로구 : num [1:31] 30 36 38 41 38 26 49 20 26 35 ...
## $ 중구 : num [1:31] 30 36 41 44 28 29 38 23 27 40 ...
## $ 중랑구 : num [1:31] 26 31 36 37 25 23 28 18 24 31 ...
library(dplyr)
dustdata_anal <- dustdata[, c("날짜","성북구","중구")]
is.na(dustdata_anal)
## 날짜 성북구 중구
## [1,] FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE
## [3,] FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE
## [8,] FALSE FALSE FALSE
## [9,] FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE
## [11,] FALSE FALSE FALSE
## [12,] FALSE FALSE FALSE
## [13,] FALSE FALSE FALSE
## [14,] FALSE FALSE FALSE
## [15,] FALSE FALSE FALSE
## [16,] FALSE FALSE FALSE
## [17,] FALSE FALSE FALSE
## [18,] FALSE FALSE FALSE
## [19,] FALSE FALSE FALSE
## [20,] FALSE FALSE FALSE
## [21,] FALSE FALSE FALSE
## [22,] FALSE FALSE FALSE
## [23,] FALSE FALSE FALSE
## [24,] FALSE FALSE FALSE
## [25,] FALSE FALSE FALSE
## [26,] FALSE FALSE FALSE
## [27,] FALSE FALSE FALSE
## [28,] FALSE FALSE FALSE
## [29,] FALSE FALSE FALSE
## [30,] FALSE FALSE FALSE
## [31,] FALSE FALSE FALSE
sum(is.na(dustdata_anal))
## [1] 0
library(psych)
##
## 다음의 패키지를 부착합니다: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
describe(dustdata_anal$성북구)
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 31 36.97 20.98 35 34.64 17.79 5 111 106 1.4 2.89 3.77
describe(dustdata_anal$중구)
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 31 43.68 22.72 40 40.56 17.79 13 118 105 1.36 1.95 4.08
boxplot(dustdata_anal$성북구, dustdata_anal$중구, main = 'finedust_compare', xlab = 'AREA', names = c('성북구','중구'), ylab = 'FINEDUST_PM', col = c("blue",'green'))
var.test(데이터1, 데이터2)
var.test(dustdata_anal$중구, dustdata_anal$성북구)
##
## F test to compare two variances
##
## data: dustdata_anal$중구 and dustdata_anal$성북구
## F = 1.1728, num df = 30, denom df = 30, p-value = 0.6653
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.5654796 2.4322651
## sample estimates:
## ratio of variances
## 1.172773
t.test(data = 테이블명, 변수2 ~ 변수1, var.equal = T)
t.test(dustdata_anal$중구, dustdata_anal$성북구, var.equal = T)
##
## Two Sample t-test
##
## data: dustdata_anal$중구 and dustdata_anal$성북구
## t = 1.2079, df = 60, p-value = 0.2318
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -4.401547 17.820902
## sample estimates:
## mean of x mean of y
## 43.67742 36.96774
anova(lm())anova(lm(변수2 ~ 변수 1, data = 테이블명))
library(readxl)
exdata1 <- read_excel("C:/Users/DaBin/Desktop/R/DATA/혼자 공부하는 R 데이터 분석/Sample1.xlsx")
boxplot(formula = Y20_CNT ~ AREA, data = exdata1)
: p-value값이 0.05보다 큰 값이라 세 집단 간 차이가 통계적으로 유의하다고 해석할 수 없음음
anova(lm(Y20_CNT ~ AREA, data = exdata1))
## Analysis of Variance Table
##
## Response: Y20_CNT
## Df Sum Sq Mean Sq F value Pr(>F)
## AREA 2 245.6 122.81 0.5545 0.5844
## Residuals 17 3765.3 221.49
oneway.testoneway.test(data = 테이블명, 변수2 ~ 변수1 , var.equal = T)
oneway.test(data = exdata1, Y20_CNT ~ AREA, var.equal = T)
##
## One-way analysis of means
##
## data: Y20_CNT and AREA
## F = 0.55446, num df = 2, denom df = 17, p-value = 0.5844