New DATA 4
setwd("C:/Users/LG/Documents/R code, file")
products <- read.csv("productcode.csv",
stringsAsFactors = F, fileEncoding = "UTF-8")
head(products)
## 업종코드 업종명
## 1 1001 유아용품
## 2 1002 한식
## 3 1100 완구
## 4 12AA 카페
colnames(products) <- c("products.cd", "products.nm")
head(products)
## products.cd products.nm
## 1 1001 유아용품
## 2 1002 한식
## 3 1100 완구
## 4 12AA 카페
dplyr 함수
library(dplyr)
system.time(aggregate(ArrTime ~ Month + Dest, data = hflights, mean))
## user system elapsed
## 0.19 0.00 0.19
system.time(hflights %>% group_by(Month, Dest) %>% summarise(meanArr = mean(ArrTime, na.rm = T)))
## user system elapsed
## 0.03 0.01 0.05
- system.time은 처리속도를 보여주는 함수.
mutate 함수
library(dplyr)
colnames(flight)[c(1,2)] <- c("YEAR", "MONTH")
colnames(flight)
## [1] "YEAR" "MONTH" "DayofMonth"
## [4] "DayOfWeek" "DepTime" "ArrTime"
## [7] "UniqueCarrier" "FlightNum" "TailNum"
## [10] "ActualElapsedTime" "AirTime" "ArrDelay"
## [13] "DepDelay" "Origin" "Dest"
## [16] "Distance" "TaxiIn" "TaxiOut"
## [19] "Cancelled" "CancellationCode" "Diverted"
flight %>% slice(1:4)
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 1 1 6 1400 1500 AA 428
## 2 2011 1 2 7 1401 1501 AA 428
## 3 2011 1 3 1 1352 1502 AA 428
## 4 2011 1 4 2 1403 1513 AA 428
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N576AA 60 40 -10 0 IAH DFW 224
## 2 N557AA 60 45 -9 1 IAH DFW 224
## 3 N541AA 70 48 -8 -8 IAH DFW 224
## 4 N403AA 70 39 3 3 IAH DFW 224
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 7 13 0 0
## 2 6 9 0 0
## 3 5 17 0 0
## 4 9 22 0 0
flight %>% mutate(new1 = substr(TailNum, 1,4),
new2 = substr(TailNum, 5,6),
new3 = paste(new1, new2),
new4 = paste0(new1, new2)) %>% slice(1:4)
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 1 1 6 1400 1500 AA 428
## 2 2011 1 2 7 1401 1501 AA 428
## 3 2011 1 3 1 1352 1502 AA 428
## 4 2011 1 4 2 1403 1513 AA 428
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N576AA 60 40 -10 0 IAH DFW 224
## 2 N557AA 60 45 -9 1 IAH DFW 224
## 3 N541AA 70 48 -8 -8 IAH DFW 224
## 4 N403AA 70 39 3 3 IAH DFW 224
## TaxiIn TaxiOut Cancelled CancellationCode Diverted new1 new2 new3
## 1 7 13 0 0 N576 AA N576 AA
## 2 6 9 0 0 N557 AA N557 AA
## 3 5 17 0 0 N541 AA N541 AA
## 4 9 22 0 0 N403 AA N403 AA
## new4
## 1 N576AA
## 2 N557AA
## 3 N541AA
## 4 N403AA
arrange 함수
library(dplyr)
flight %>% arrange(DayOfWeek) %>% slice(1:2)
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 1 3 1 1352 1502 AA 428
## 2 2011 1 10 1 1443 1553 AA 428
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N541AA 70 48 -8 -8 IAH DFW 224
## 2 N504AA 70 45 43 43 IAH DFW 224
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 5 17 0 0
## 2 6 19 0 0
flight %>% arrange(desc(DayOfWeek)) %>% slice(1:2)
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 1 2 7 1401 1501 AA 428
## 2 2011 1 9 7 1443 1554 AA 428
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N557AA 60 45 -9 1 IAH DFW 224
## 2 N476AA 71 41 44 43 IAH DFW 224
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 6 9 0 0
## 2 8 22 0 0
flight %>% arrange(DayOfWeek, ArrDelay) %>% slice(1:2)
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 8 29 1 935 1041 OO 2040
## 2 2011 8 22 1 2105 2216 OO 2003
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N767SK 186 169 -54 -10 IAH BFL 1428
## 2 N746SK 191 175 -44 -5 IAH BFL 1428
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 4 13 0 0
## 2 5 11 0 0
flight %>% arrange(desc(DayOfWeek, ArrDelay)) %>% slice(1:2)
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 1 2 7 1401 1501 AA 428
## 2 2011 1 9 7 1443 1554 AA 428
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N557AA 60 45 -9 1 IAH DFW 224
## 2 N476AA 71 41 44 43 IAH DFW 224
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 6 9 0 0
## 2 8 22 0 0
select 함수
library(dplyr)
flight %>% select(DayofMonth, DayOfWeek) %>% head()
## DayofMonth DayOfWeek
## 5424 1 6
## 5425 2 7
## 5426 3 1
## 5427 4 2
## 5428 5 3
## 5429 6 4
flight %>% select(- DayofMonth, - DayOfWeek) %>% head()
## YEAR MONTH DepTime ArrTime UniqueCarrier FlightNum TailNum
## 5424 2011 1 1400 1500 AA 428 N576AA
## 5425 2011 1 1401 1501 AA 428 N557AA
## 5426 2011 1 1352 1502 AA 428 N541AA
## 5427 2011 1 1403 1513 AA 428 N403AA
## 5428 2011 1 1405 1507 AA 428 N492AA
## 5429 2011 1 1359 1503 AA 428 N262AA
## ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 5424 60 40 -10 0 IAH DFW 224
## 5425 60 45 -9 1 IAH DFW 224
## 5426 70 48 -8 -8 IAH DFW 224
## 5427 70 39 3 3 IAH DFW 224
## 5428 62 44 -3 5 IAH DFW 224
## 5429 64 45 -7 -1 IAH DFW 224
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 5424 7 13 0 0
## 5425 6 9 0 0
## 5426 5 17 0 0
## 5427 9 22 0 0
## 5428 9 9 0 0
## 5429 6 13 0 0
filter 함수
library(dplyr)
flight %>% filter(MONTH == 12) %>% head()
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 12 15 4 2113 2217 AA 426
## 2 2011 12 16 5 2004 2128 AA 426
## 3 2011 12 18 7 2007 2113 AA 426
## 4 2011 12 19 1 2108 2223 AA 426
## 5 2011 12 20 2 2008 2107 AA 426
## 6 2011 12 21 3 2025 2124 AA 426
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N433AA 64 44 47 63 IAH DFW 224
## 2 N588AA 84 39 -2 -6 IAH DFW 224
## 3 N4XHAA 66 46 -17 -3 IAH DFW 224
## 4 N4YDAA 75 54 53 58 IAH DFW 224
## 5 N434AA 59 41 -23 -2 IAH DFW 224
## 6 N589AA 59 43 -6 15 IAH DFW 224
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 6 14 0 0
## 2 8 37 0 0
## 3 7 13 0 0
## 4 11 10 0 0
## 5 6 12 0 0
## 6 5 11 0 0
flight %>% filter(MONTH == 12 & UniqueCarrier == "WN") %>% head()
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 12 7 3 932 1033 WN 5
## 2 2011 12 7 3 1907 2014 WN 285
## 3 2011 12 7 3 1255 1405 WN 787
## 4 2011 12 7 3 902 946 WN 598
## 5 2011 12 7 3 1726 1806 WN 915
## 6 2011 12 7 3 1142 1225 WN 1509
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N786SW 121 111 -12 2 HOU ABQ 759
## 2 N642WN 127 112 -11 -3 HOU ABQ 759
## 3 N663SW 130 110 -5 0 HOU ABQ 759
## 4 N331SW 44 30 1 2 HOU AUS 148
## 5 N355SW 40 28 -9 1 HOU AUS 148
## 6 N612SW 43 29 -5 -3 HOU AUS 148
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 4 6 0 0
## 2 4 11 0 0
## 3 3 17 0 0
## 4 3 11 0 0
## 5 4 8 0 0
## 6 4 10 0 0
flight %>% filter(MONTH > 5) %>% select(MONTH) %>% table()
## .
## 6 7 8 9 10 11 12
## 19600 20548 20176 18065 18696 18021 19117
flight %>% filter(MONTH > 5 | MONTH < 3) %>% select(MONTH) %>% table()
## .
## 1 2 6 7 8 9 10 11 12
## 18910 17128 19600 20548 20176 18065 18696 18021 19117
flight %>% filter(Dest %in% c("ABQ", "AUS")) %>% slice(1:2)
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1 2011 1 31 1 1536 1635 CO 35
## 2 2011 1 31 1 1301 1356 CO 241
## TailNum ActualElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance
## 1 N35204 59 32 7 1 IAH AUS 140
## 2 N14629 55 27 -2 -4 IAH AUS 140
## TaxiIn TaxiOut Cancelled CancellationCode Diverted
## 1 7 20 0 0
## 2 5 23 0 0
grepl 함수
library(dplyr)
DATA <- flight %>% select("TailNum","Dest")
head(DATA)
## TailNum Dest
## 5424 N576AA DFW
## 5425 N557AA DFW
## 5426 N541AA DFW
## 5427 N403AA DFW
## 5428 N492AA DFW
## 5429 N262AA DFW
DATA %>% select(TailNum) %>% unique() %>% slice(1:2)
## TailNum
## 1 N576AA
## 2 N557AA
DATA %>% filter(grepl("57", TailNum)) %>% slice(1:2)
## TailNum Dest
## 1 N576AA DFW
## 2 N557AA DFW
DATA %>% filter(grepl("^N", TailNum)) %>% slice(1:2)
## TailNum Dest
## 1 N576AA DFW
## 2 N557AA DFW
DATA %>% filter(grepl("A$", TailNum)) %>% slice(1:2)
## TailNum Dest
## 1 N576AA DFW
## 2 N557AA DFW
DATA %>% select(Dest) %>% unique() %>% slice(1:2)
## Dest
## 1 DFW
## 2 MIA
DATA %>% filter(grepl("W", Dest)) %>% slice(1:2)
## TailNum Dest
## 1 N576AA DFW
## 2 N557AA DFW
DATA %>% filter(grepl("^M", Dest)) %>% slice(1:2)
## TailNum Dest
## 1 N3DGAA MIA
## 2 N3CCAA MIA
DATA %>% filter(grepl("A$", Dest)) %>% slice(1:2)
## TailNum Dest
## 1 N3DGAA MIA
## 2 N3CCAA MIA
group_by 함수
library(dplyr)
flight %>% group_by(Dest) %>% summarise(sum.flight.time = sum(AirTime)) %>% slice(1:100)
## # A tibble: 100 x 2
## Dest sum.flight.time
## <chr> <int>
## 1 ABQ NA
## 2 AEX NA
## 3 AGS 103
## 4 AMA NA
## 5 ANC NA
## 6 ASE NA
## 7 ATL NA
## 8 AUS NA
## 9 AVL NA
## 10 BFL NA
## # ... with 90 more rows
flight %>% filter(AirTime != "NA") %>% group_by(Dest) %>% summarise(sum.flight.time = sum(AirTime)) %>% slice(1:100)
## # A tibble: 100 x 2
## Dest sum.flight.time
## <chr> <int>
## 1 ABQ 304232
## 2 AEX 24254
## 3 AGS 103
## 4 AMA 98182
## 5 ANC 49744
## 6 ASE 15386
## 7 ATL 727430
## 8 AUS 145885
## 9 AVL 37542
## 10 BFL 96278
## # ... with 90 more rows
flight %>% filter(AirTime != "NA") %>% group_by(Dest) %>% summarise(sum.flight.time = mean(AirTime)) %>% slice(1:100)
## # A tibble: 100 x 2
## Dest sum.flight.time
## <chr> <dbl>
## 1 ABQ 109.
## 2 AEX 34.2
## 3 AGS 103
## 4 AMA 78.1
## 5 ANC 401.
## 6 ASE 137.
## 7 ATL 94.3
## 8 AUS 29.2
## 9 AVL 109.
## 10 BFL 191.
## # ... with 90 more rows
flight %>% filter(is.na(AirTime)) %>% group_by(Dest)
## # A tibble: 3,622 x 21
## # Groups: Dest [112]
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## <int> <int> <int> <int> <int> <int> <chr> <int>
## 1 2011 1 24 1 NA NA AA 1700
## 2 2011 1 9 7 NA NA AA 1820
## 3 2011 1 11 2 553 1216 AA 1994
## 4 2011 1 11 2 1820 12 AS 731
## 5 2011 1 11 2 NA NA B6 624
## 6 2011 1 19 3 NA NA B6 624
## 7 2011 1 27 4 NA NA B6 624
## 8 2011 1 31 1 NA NA CO 442
## 9 2011 1 31 1 NA NA CO 500
## 10 2011 1 31 1 NA NA CO 1711
## # ... with 3,612 more rows, and 13 more variables: TailNum <chr>,
## # ActualElapsedTime <int>, AirTime <int>, ArrDelay <int>,
## # DepDelay <int>, Origin <chr>, Dest <chr>, Distance <int>,
## # TaxiIn <int>, TaxiOut <int>, Cancelled <int>, CancellationCode <chr>,
## # Diverted <int>
flight %>% filter(!is.na(AirTime)) %>% group_by(Dest)
## # A tibble: 223,874 x 21
## # Groups: Dest [116]
## YEAR MONTH DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## <int> <int> <int> <int> <int> <int> <chr> <int>
## 1 2011 1 1 6 1400 1500 AA 428
## 2 2011 1 2 7 1401 1501 AA 428
## 3 2011 1 3 1 1352 1502 AA 428
## 4 2011 1 4 2 1403 1513 AA 428
## 5 2011 1 5 3 1405 1507 AA 428
## 6 2011 1 6 4 1359 1503 AA 428
## 7 2011 1 7 5 1359 1509 AA 428
## 8 2011 1 8 6 1355 1454 AA 428
## 9 2011 1 9 7 1443 1554 AA 428
## 10 2011 1 10 1 1443 1553 AA 428
## # ... with 223,864 more rows, and 13 more variables: TailNum <chr>,
## # ActualElapsedTime <int>, AirTime <int>, ArrDelay <int>,
## # DepDelay <int>, Origin <chr>, Dest <chr>, Distance <int>,
## # TaxiIn <int>, TaxiOut <int>, Cancelled <int>, CancellationCode <chr>,
## # Diverted <int>
flight %>% group_by(Dest) %>% summarise(sum.AirTime = sum(AirTime, na.rm = T))
## # A tibble: 116 x 2
## Dest sum.AirTime
## <chr> <int>
## 1 ABQ 304232
## 2 AEX 24254
## 3 AGS 103
## 4 AMA 98182
## 5 ANC 49744
## 6 ASE 15386
## 7 ATL 727430
## 8 AUS 145885
## 9 AVL 37542
## 10 BFL 96278
## # ... with 106 more rows
flight %>% filter(!is.na(AirTime)) %>% group_by(Dest) %>% summarise(sum.flight.time = sum(AirTime))
## # A tibble: 116 x 2
## Dest sum.flight.time
## <chr> <int>
## 1 ABQ 304232
## 2 AEX 24254
## 3 AGS 103
## 4 AMA 98182
## 5 ANC 49744
## 6 ASE 15386
## 7 ATL 727430
## 8 AUS 145885
## 9 AVL 37542
## 10 BFL 96278
## # ... with 106 more rows
flight %>% group_by(YEAR, MONTH) %>% summarise(sum.AirTime = sum(AirTime, na.rm = T))
## # A tibble: 12 x 3
## # Groups: YEAR [1]
## YEAR MONTH sum.AirTime
## <int> <int> <int>
## 1 2011 1 1943224
## 2 2011 2 1678328
## 3 2011 3 2084707
## 4 2011 4 1995575
## 5 2011 5 2077669
## 6 2011 6 2134462
## 7 2011 7 2218190
## 8 2011 8 2158227
## 9 2011 9 1932538
## 10 2011 10 2001579
## 11 2011 11 1929455
## 12 2011 12 2056303
flight %>% group_by(YEAR, MONTH) %>% summarise(sum.AirTime = sum(AirTime, na.rm = T)) %>% print(n = 5)
## # A tibble: 12 x 3
## # Groups: YEAR [1]
## YEAR MONTH sum.AirTime
## <int> <int> <int>
## 1 2011 1 1943224
## 2 2011 2 1678328
## 3 2011 3 2084707
## 4 2011 4 1995575
## 5 2011 5 2077669
## # ... with 7 more rows
Practice
Practice 1 (6월 ~ 9월의 평균강수량)
climates %>% mutate(month = substr(ym, 5, 6)) %>%
filter(month >= "06" & month <= "09") %>%
group_by(month) %>%
summarise(mean.rainfall = mean(rainfall, na.rm = T))
## # A tibble: 4 x 2
## month mean.rainfall
## <chr> <dbl>
## 1 06 103
## 2 07 76.4
## 3 08 94.9
## 4 09 71.7
Practice 2 (내림차순 정렬)
climates %>% mutate(month = substr(ym, 5, 6)) %>%
filter(month >= "06" & month <= "09") %>%
group_by(month) %>%
summarise(mean.rainfall = mean(rainfall, na.rm = T)) %>%
arrange(desc(mean.rainfall))
## # A tibble: 4 x 2
## month mean.rainfall
## <chr> <dbl>
## 1 06 103
## 2 08 94.9
## 3 07 76.4
## 4 09 71.7
Practice 3 (6월 ~ 9월의 평균강수량, 지역구별 평균강수량, 전체 정렬)
climates %>% mutate(month = substr(ym, 5, 6)) %>%
filter(month >= "06" & month <= "09") %>%
group_by(district, month) %>%
summarise(mean.rainfall = mean(rainfall, na.rm = T)) %>%
arrange(mean.rainfall)
## # A tibble: 100 x 3
## # Groups: district [25]
## district month mean.rainfall
## <chr> <chr> <dbl>
## 1 강남구 09 0
## 2 강동구 07 0
## 3 강서구 07 0
## 4 강서구 08 0
## 5 관악구 09 0
## 6 광진구 09 0
## 7 금천구 07 0
## 8 도봉구 07 0
## 9 마포구 09 0
## 10 서초구 09 0
## # ... with 90 more rows
ungroup 함수
climates %>% mutate(month = substr(ym, 5, 6)) %>%
filter(month >= "06" & month <= "09") %>%
group_by(district, month) %>%
summarise(mean.rainfall = mean(rainfall, na.rm = T)) %>%
ungroup %>%
arrange(desc(mean.rainfall))
## # A tibble: 100 x 3
## district month mean.rainfall
## <chr> <chr> <dbl>
## 1 노원구 06 253
## 2 동작구 08 220
## 3 송파구 06 212
## 4 서대문구 08 210
## 5 동작구 09 204
## 6 관악구 07 182
## 7 금천구 08 178
## 8 관악구 08 178.
## 9 양천구 06 171
## 10 양천구 08 171
## # ... with 90 more rows
- group_by의 순서가 아닌 전체정렬을 위해서 ungroup을 사용함.
Practice 4 (2014년 12월 최고 강수량, 2015년 9월 최고 강수량)
climates %>%
filter(ym == "201412") %>%
group_by(ym) %>%
summarise(max.rainfall = max(rainfall, na.rm = T))
## # A tibble: 1 x 2
## ym max.rainfall
## <int> <int>
## 1 201412 276
climates %>% filter(rainfall == 276)
## city district ym lon lat rainfall
## 1 서울특별시 관악구 201412 37.46738 126.9453 276
climates %>%
filter(ym == "201509") %>%
group_by(ym) %>%
summarise(max.rainfall = max(rainfall, na.rm = T))
## # A tibble: 1 x 2
## ym max.rainfall
## <int> <int>
## 1 201509 286
climates %>% filter(rainfall == 286)
## city district ym lon lat rainfall
## 1 서울특별시 금천구 201509 37.46058 126.9008 286
Practice 5 (rank, 내림차순)
rank(c(30,20,10,40,50))
## [1] 3 2 1 4 5
rank(c(30,20,10,10,50))
## [1] 4.0 3.0 1.5 1.5 5.0
rank(c(30,20,10,10,50), ties.method = "average")
## [1] 4.0 3.0 1.5 1.5 5.0
rank(c(30,20,10,10,50), ties.method = "min")
## [1] 4 3 1 1 5
rank(c(30,20,10,10,50), ties.method = "first")
## [1] 4 3 1 2 5
climates %>%
group_by(district) %>%
summarise(mean.rainfall = mean(rainfall, na.rm = T)) %>%
mutate(new.rank = rank(-1*mean.rainfall, ties.method = "min")) %>%
arrange(new.rank)
## # A tibble: 25 x 3
## district mean.rainfall new.rank
## <chr> <dbl> <int>
## 1 관악구 127. 1
## 2 동작구 123. 2
## 3 강서구 118 3
## 4 중랑구 117. 4
## 5 노원구 114. 5
## 6 금천구 103. 6
## 7 송파구 91.9 7
## 8 강북구 91.8 8
## 9 도봉구 90.8 9
## 10 구로구 89.4 10
## # ... with 15 more rows
Practice 6 (송파구, 강남구, 중랑구의 평균강수량 내림차순)
climates %>%
group_by(district) %>%
summarise(mean.rainfall = mean(rainfall, na.rm = T)) %>%
mutate(new.rank = rank(-1*mean.rainfall, ties.method = "min")) %>%
arrange(new.rank) %>%
filter(district %in% c("송파구", "강남구", "중랑구")) %>%
arrange(desc(mean.rainfall))
## # A tibble: 3 x 3
## district mean.rainfall new.rank
## <chr> <dbl> <int>
## 1 중랑구 117. 4
## 2 송파구 91.9 7
## 3 강남구 81.8 13
Practice 7
sales %>%
filter(gender == "남") %>%
arrange(desc(sales.num)) %>%
slice(1:10)
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140215 500
## 2 서울특별시 강남구 남 베타문구 110002 20140411 500
## 3 서울특별시 강남구 남 스탑버스 12AA02 20140411 500
## 4 서울특별시 강남구 남 원조백반 100202 20140715 500
## 5 서울특별시 강남구 남 원조백반 100202 20140730 500
## 6 서울특별시 강남구 남 키즈랜드 100101 20141003 500
## 7 서울특별시 강남구 남 @ @ 20141202 500
## 8 서울특별시 강동구 남 전주비빔 100203 20140221 500
## 9 서울특별시 강동구 남 카페베타 12AA01 20140303 500
## 10 서울특별시 강동구 남 베타문구 110002 20140308 500
sales %>%
filter(gender == "여" & district == "강남구") %>%
arrange(desc(sales.num)) %>%
slice(1:10)
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 여 원조한식 100201 20140116 500
## 2 서울특별시 강남구 여 스탑버스 12AA02 20140215 500
## 3 서울특별시 강남구 여 스탑버스 12AA02 20140411 500
## 4 서울특별시 강남구 여 원조백반 100202 20140715 500
## 5 서울특별시 강남구 여 키즈랜드 100101 20141003 500
## 6 서울특별시 강남구 여 원조한식 100201 20141202 500
## 7 서울특별시 강남구 여 원조한식 100201 20140106 499
## 8 서울특별시 강남구 여 원조백반 100202 20140126 499
## 9 서울특별시 강남구 여 스탑버스 12AA02 20140210 499
## 10 서울특별시 강남구 여 @ @ 20140824 499
sales %>%
filter(gender == "여") %>%
group_by(district, sales.nm) %>%
summarise(sum.sales.num = sum(sales.num, na.rm = T)) %>%
arrange(desc(sum.sales.num)) %>%
slice(1:3)
## # A tibble: 75 x 3
## # Groups: district [25]
## district sales.nm sum.sales.num
## <chr> <chr> <int>
## 1 강남구 키즈랜드 141205
## 2 강남구 원조백반 137990
## 3 강남구 전주비빔 135366
## 4 강동구 전주비빔 142596
## 5 강동구 스탑버스 139493
## 6 강동구 원조한식 135862
## 7 강북구 카페베타 139061
## 8 강북구 베타문구 137045
## 9 강북구 원조한식 135285
## 10 강서구 베타문구 140984
## # ... with 65 more rows
Practices 8
sales %>%
group_by(district, ymd, gender) %>%
summarise(max.sales.num = max(sales.num, na.rm = T)) %>%
group_by(gender) %>%
summarise(mean.sales.num = mean(max.sales.num, na.rm = T)) %>%
arrange(desc(mean.sales.num))
## # A tibble: 3 x 2
## gender mean.sales.num
## <chr> <dbl>
## 1 남 493.
## 2 여 493.
## 3 <NA> 465.
Practice 9
sales %>%
filter(sales.nm != "@") %>%
mutate(year = substr(ymd, 1, 4)) %>%
filter(year == "2014") %>%
group_by(year, district, sales.nm) %>%
summarise(mean.sales.num = mean(sales.num, na.rm = T)) %>%
arrange(desc(mean.sales.num)) %>%
slice(1:2)
## # A tibble: 50 x 4
## # Groups: year, district [25]
## year district sales.nm mean.sales.num
## <chr> <chr> <chr> <dbl>
## 1 2014 강남구 원조한식 261.
## 2 2014 강남구 원조백반 257.
## 3 2014 강동구 전주비빔 256.
## 4 2014 강동구 스탑버스 254.
## 5 2014 강북구 카페베타 260.
## 6 2014 강북구 베타문구 255.
## 7 2014 강서구 키즈랜드 259.
## 8 2014 강서구 원조한식 255.
## 9 2014 관악구 원조백반 260.
## 10 2014 관악구 전주비빔 259.
## # ... with 40 more rows
Join
Join_function
DATA
df1 <- data.frame(title = c("카페", "한식", "유아용품", "양식", "전자제품"),
last_rank = c(1,2,3,4,5))
df2 <- data.frame(title = c("한식", "양식", "전자제품", "일식", "꽃"),
this_rank = c(1,2,3,4,5))
df1
## title last_rank
## 1 카페 1
## 2 한식 2
## 3 유아용품 3
## 4 양식 4
## 5 전자제품 5
df2
## title this_rank
## 1 한식 1
## 2 양식 2
## 3 전자제품 3
## 4 일식 4
## 5 꽃 5
library(dplyr)
left_join(df1, df2, by = "title")
## title last_rank this_rank
## 1 카페 1 NA
## 2 한식 2 1
## 3 유아용품 3 NA
## 4 양식 4 2
## 5 전자제품 5 3
right_join(df1, df2, by = "title")
## title last_rank this_rank
## 1 한식 2 1
## 2 양식 4 2
## 3 전자제품 5 3
## 4 일식 NA 4
## 5 꽃 NA 5
left_join(df2, df1, by = "title")
## title this_rank last_rank
## 1 한식 1 2
## 2 양식 2 4
## 3 전자제품 3 5
## 4 일식 4 NA
## 5 꽃 5 NA
inner_join(df1, df2, by = "title")
## title last_rank this_rank
## 1 한식 2 1
## 2 양식 4 2
## 3 전자제품 5 3
anti_join(df1, df2, by = "title")
## title last_rank
## 1 카페 1
## 2 유아용품 3
Join Practices 1
library(dplyr)
sales %>% head()
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 여 키즈랜드 100101 20140101 309
## 3 서울특별시 강남구 여 키즈랜드 100101 20140101 365
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 421
## 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 413
## 6 서울특별시 강남구 남 키즈랜드 100101 20140101 428
products %>% head()
## products.cd products.nm
## 1 1001 유아용품
## 2 1002 한식
## 3 1100 완구
## 4 12AA 카페
sales <- sales %>% mutate(products.cd = substr(sales.cd, 1, 4))
sales <- left_join(sales, products, by = "products.cd")
sales %>% head()
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 여 키즈랜드 100101 20140101 309
## 3 서울특별시 강남구 여 키즈랜드 100101 20140101 365
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 421
## 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 413
## 6 서울특별시 강남구 남 키즈랜드 100101 20140101 428
## products.cd products.nm
## 1 12AA 카페
## 2 1001 유아용품
## 3 1001 유아용품
## 4 12AA 카페
## 5 12AA 카페
## 6 1001 유아용품
library(dplyr)
climates %>% head()
## city district ym lon lat rainfall
## 1 서울특별시 강남구 201401 37.49666 127.063 NA
## 2 서울특별시 강남구 201402 37.49666 127.063 187
## 3 서울특별시 강남구 201403 37.49666 127.063 122
## 4 서울특별시 강남구 201404 37.49666 127.063 0
## 5 서울특별시 강남구 201405 37.49666 127.063 NA
## 6 서울특별시 강남구 201406 37.49666 127.063 144
sales %>% head()
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 여 키즈랜드 100101 20140101 309
## 3 서울특별시 강남구 여 키즈랜드 100101 20140101 365
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 421
## 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 413
## 6 서울특별시 강남구 남 키즈랜드 100101 20140101 428
## products.cd products.nm
## 1 12AA 카페
## 2 1001 유아용품
## 3 1001 유아용품
## 4 12AA 카페
## 5 12AA 카페
## 6 1001 유아용품
sales <- sales %>% mutate(ym = substr(ymd, 1,6))
str(sales)
## 'data.frame': 262800 obs. of 10 variables:
## $ city : chr "서울특별시" "서울특별시" "서울특별시" "서울특별시" ...
## $ district : chr "강남구" "강남구" "강남구" "강남구" ...
## $ gender : chr "남" "여" "여" "남" ...
## $ sales.nm : chr "스탑버스" "키즈랜드" "키즈랜드" "스탑버스" ...
## $ sales.cd : chr "12AA02" "100101" "100101" "12AA02" ...
## $ ymd : int 20140101 20140101 20140101 20140101 20140101 20140101 20140101 20140101 20140101 20140101 ...
## $ sales.num : int 103 309 365 421 413 428 287 363 88 117 ...
## $ products.cd: chr "12AA" "1001" "1001" "12AA" ...
## $ products.nm: chr "카페" "유아용품" "유아용품" "카페" ...
## $ ym : chr "201401" "201401" "201401" "201401" ...
str(climates)
## 'data.frame': 600 obs. of 6 variables:
## $ city : chr "서울특별시" "서울특별시" "서울특별시" "서울특별시" ...
## $ district: chr "강남구" "강남구" "강남구" "강남구" ...
## $ ym : int 201401 201402 201403 201404 201405 201406 201407 201408 201409 201410 ...
## $ lon : num 37.5 37.5 37.5 37.5 37.5 ...
## $ lat : num 127 127 127 127 127 ...
## $ rainfall: int NA 187 122 0 NA 144 0 0 0 NA ...
climates$ym <- as.character(climates$ym)
sales <- left_join(sales, climates, by = "ym")
sales %>% head()
## city.x district.x gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 3 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 5 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 6 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## products.cd products.nm ym city.y district.y lon lat
## 1 12AA 카페 201401 서울특별시 강남구 37.49666 127.0630
## 2 12AA 카페 201401 서울특별시 강동구 37.55032 127.1470
## 3 12AA 카페 201401 서울특별시 강북구 37.64349 127.0112
## 4 12AA 카페 201401 서울특별시 강서구 37.56123 126.8228
## 5 12AA 카페 201401 서울특별시 관악구 37.46738 126.9453
## 6 12AA 카페 201401 서울특별시 광진구 37.54584 127.0862
## rainfall
## 1 NA
## 2 NA
## 3 0
## 4 192
## 5 0
## 6 158
sales %>% filter(!is.na(rainfall)) %>% head()
## city.x district.x gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 3 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 5 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 6 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## products.cd products.nm ym city.y district.y lon lat
## 1 12AA 카페 201401 서울특별시 강북구 37.64349 127.0112
## 2 12AA 카페 201401 서울특별시 강서구 37.56123 126.8228
## 3 12AA 카페 201401 서울특별시 관악구 37.46738 126.9453
## 4 12AA 카페 201401 서울특별시 광진구 37.54584 127.0862
## 5 12AA 카페 201401 서울특별시 금천구 37.46058 126.9008
## 6 12AA 카페 201401 서울특별시 노원구 37.65252 127.0750
## rainfall
## 1 0
## 2 192
## 3 0
## 4 158
## 5 144
## 6 173
Join Practices 2
setwd("C:/Users/LG/Documents/R code, file")
climates <- read.csv("seoul_climate.csv",
stringsAsFactors = F, fileEncoding = "UTF-8")
sales <- read.csv("sales.csv",
stringsAsFactors = F, fileEncoding = "UTF-8")
products <- read.csv("productcode.csv",
stringsAsFactors = F, fileEncoding = "UTF-8")
colnames(climates) <- c("city", "district", "ym", "lon", "lat", "rainfall")
colnames(sales) <- c("city", "district", "gender", "sales.nm", "sales.cd", "ymd", "sales.num")
colnames(products) <- c("products.cd", "products.nm")
head(climates)
## city district ym lon lat rainfall
## 1 서울특별시 강남구 201401 37.49666 127.063 NA
## 2 서울특별시 강남구 201402 37.49666 127.063 187
## 3 서울특별시 강남구 201403 37.49666 127.063 122
## 4 서울특별시 강남구 201404 37.49666 127.063 0
## 5 서울특별시 강남구 201405 37.49666 127.063 NA
## 6 서울특별시 강남구 201406 37.49666 127.063 144
head(sales)
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 여 키즈랜드 100101 20140101 309
## 3 서울특별시 강남구 여 키즈랜드 100101 20140101 365
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 421
## 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 413
## 6 서울특별시 강남구 남 키즈랜드 100101 20140101 428
head(products)
## products.cd products.nm
## 1 1001 유아용품
## 2 1002 한식
## 3 1100 완구
## 4 12AA 카페
library(dplyr)
sales <- sales %>%
mutate(products.cd = substr(sales.cd, 1, 4))
sales <- left_join(sales, products)
sales %>% head()
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 여 키즈랜드 100101 20140101 309
## 3 서울특별시 강남구 여 키즈랜드 100101 20140101 365
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 421
## 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 413
## 6 서울특별시 강남구 남 키즈랜드 100101 20140101 428
## products.cd products.nm
## 1 12AA 카페
## 2 1001 유아용품
## 3 1001 유아용품
## 4 12AA 카페
## 5 12AA 카페
## 6 1001 유아용품
climates$ym <- as.character(climates$ym)
sales <- sales %>%
mutate(ym = substr(ymd, 1,6))
sales <- left_join(sales, climates)
sales %>% head()
## city district gender sales.nm sales.cd ymd sales.num
## 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103
## 2 서울특별시 강남구 여 키즈랜드 100101 20140101 309
## 3 서울특별시 강남구 여 키즈랜드 100101 20140101 365
## 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 421
## 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 413
## 6 서울특별시 강남구 남 키즈랜드 100101 20140101 428
## products.cd products.nm ym lon lat rainfall
## 1 12AA 카페 201401 37.49666 127.063 NA
## 2 1001 유아용품 201401 37.49666 127.063 NA
## 3 1001 유아용품 201401 37.49666 127.063 NA
## 4 12AA 카페 201401 37.49666 127.063 NA
## 5 12AA 카페 201401 37.49666 127.063 NA
## 6 1001 유아용품 201401 37.49666 127.063 NA
sales %>%
mutate(month = substr(ymd, 5, 6)) %>%
group_by(month, district, products.nm) %>%
summarise(mean.sales.num = mean(sales.num, na.rm = T),
mean.rainfall = mean(rainfall, na.rm = T)) %>%
filter(!is.na(mean.sales.num) & !is.na(mean.rainfall)) %>%
mutate(rainfall.grade = ifelse(mean.rainfall >= 250, "상",
ifelse(mean.rainfall >= 50, "중", "하"))) %>%
arrange(desc(mean.rainfall)) %>%
head()
## # A tibble: 6 x 6
## # Groups: month, district [2]
## month district products.nm mean.sales.num mean.rainfall rainfall.grade
## <chr> <chr> <chr> <dbl> <dbl> <chr>
## 1 12 관악구 완구 251. 276 상
## 2 12 관악구 유아용품 228. 276 상
## 3 12 관악구 카페 267. 276 상
## 4 12 관악구 한식 276. 276 상
## 5 12 관악구 <NA> 243. 276 상
## 6 12 동대문구 완구 256 257 상
ggplot2
ggplot2_fuction
DATA
매출 <- read.csv("data_mac.csv",
stringsAsFactors = F, fileEncoding = "UTF-8")
head(매출)
## 매출월 요일 점포 성별 구매건수
## 1 1 월 a 남 21451
## 2 1 화 b 여 24922
## 3 1 수 c 남 8835
## 4 1 목 d 여 13720
## 5 1 금 e 남 10826
## 6 1 토 f 여 43319
library(dplyr)
월매출 <- 매출 %>%
group_by(매출월) %>%
summarise(합계 = sum(구매건수))
head(월매출)
## # A tibble: 6 x 2
## 매출월 합계
## <int> <int>
## 1 1 5113061
## 2 2 5398763
## 3 3 5361149
## 4 4 5302072
## 5 5 4862531
## 6 6 4960049
점포월매출 <- 매출 %>%
group_by(매출월, 점포) %>%
summarise(합계 = sum(구매건수))
head(점포월매출)
## # A tibble: 6 x 3
## # Groups: 매출월 [1]
## 매출월 점포 합계
## <int> <chr> <int>
## 1 1 a 295033
## 2 1 b 320486
## 3 1 c 357203
## 4 1 d 243672
## 5 1 e 331590
## 6 1 f 355274
plot 1
library(ggplot2)
qplot(매출월, 합계, data = 월매출) +
theme_grey(base_family = "AplleGothic")

plot 2
library(ggplot2)
qplot(매출월, 합계, data = 월매출, geom = "line") +
theme_grey(base_family = "AplleGothic")

plot 3
library(ggplot2)
qplot(매출월, 합계, data = 월매출, geom = "line") +
scale_x_continuous(breaks = c(1,2,3,6,9,12)) +
theme_grey(base_family = "AplleGothic")

plot 4
library(ggplot2)
qplot(매출월, 합계, data = 점포월매출)

library(ggplot2)
qplot(매출월, 합계, data = 점포월매출, geom = "line")

library(ggplot2)
qplot(매출월, 합계, data = 점포월매출, geom = "line", color = 점포)

library(ggplot2)
qplot(매출월, 합계, data = 점포월매출, geom = "line", color = 점포) +
scale_x_continuous(breaks = c(1,2,3,4,5,6,7,8,9,10,11,12)) +
scale_y_continuous(breaks = seq(200000, 500000, 50000)) +
theme_grey(base_family = "AplleGothic")

library(ggplot2)
library(scales)
qplot(매출월, 합계, data = 점포월매출, geom = "line", color = 점포) +
scale_x_continuous(breaks = c(1,2,3,4,5,6,7,8,9,10,11,12)) +
scale_y_continuous(labels = comma) +
theme_grey(base_family = "AplleGothic")

library(ggplot2)
library(scales)
qplot(매출월, 합계, data = 점포월매출, geom = "line", color = 점포) +
scale_x_continuous(breaks = c(1,2,3,4,5,6,7,8,9,10,11,12)) +
scale_y_continuous(labels = format_format(scientific = F)) +
theme_grey(base_family = "AplleGothic")

Plot 5
a점매출 <- 점포월매출 %>% filter(점포 == "a")
qplot(매출월, 합계, data = a점매출, geom = "line") +
scale_x_continuous(breaks = c(1,2,3,4,5,6,7,8,9,10,11,12)) +
scale_y_continuous(labels = format_format(scientific = F)) +
theme_grey(base_family = "AplleGothic")

plot 6
b점매출 <- 점포월매출 %>% filter(점포 == "b")
qplot(매출월, 합계, data = b점매출, geom = "line", main = "b점 월매출") +
scale_x_continuous(breaks = c(1,2,3,4,5,6,7,8,9,10,11,12)) +
scale_y_continuous(labels = format_format(scientific = F)) +
expand_limits(y = c(190000, 550000)) +
theme_grey(base_family = "AplleGothic")

plot 7
qplot(매출월, 합계, data = 점포월매출)

qplot(매출월, 합계, data = 점포월매출) + theme_gray(base_size = 20)

qplot(매출월, 합계, data = 점포월매출) + theme_gray(base_size = 30)

qplot(매출월, 합계, data = 점포월매출) + theme_gray(base_size = 20, base_family = "serif")

qplot(매출월, 합계, data = 점포월매출) + theme_gray(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_bw(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_linedraw(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_light(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_dark(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_minimal(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_classic(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_void(base_size = 20, base_family = "sans")

qplot(매출월, 합계, data = 점포월매출) + theme_gray(base_size = 20, base_family = "sans")

- theme_set()는 plot의 default를 결정할 수 있는 함수.
- theme_set(theme_grey())는 다시 default를 grey로 돌리는 방법.