dplyr

knitr::opts_chunk$set(echo = TRUE, fig.align = "center", fig.height = 7, fig.width = 7, warning = FALSE, message = FALSE, include = TRUE)

DATA

df <- data.frame(x = 1:10, y = 10:1)
df
##     x  y
## 1   1 10
## 2   2  9
## 3   3  8
## 4   4  7
## 5   5  6
## 6   6  5
## 7   7  4
## 8   8  3
## 9   9  2
## 10 10  1

DATA select

library(dplyr)

df %>% filter(x > 5) %>% arrange(desc(x)) %>% slice(4)
##   x y
## 1 7 4
  • df파일에서 x가 5보다 큰 파일을 선택해서 x에 대하여 내림차순후에 4번째 행을 선택함.
  • %>% 연산자는 함수에 적용하는게 더 적절함.

NEW DATA 1

library(hflights)

flight <- data.frame(hflights)
dim(flight)
## [1] 227496     21
  • 비행에 관련된 데이터.

NEW DATA 2

setwd("C:/Users/LG/Documents/R code, file")

climates <- read.csv("seoul_climate.csv",
         stringsAsFactors = F, fileEncoding = "UTF-8")
head(climates)
##           시     구   연월     위도    경도 강수량
## 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
colnames(climates) <- c("city", "district", "ym", "lon", "lat", "rainfall")
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

New DATA 3

setwd("C:/Users/LG/Documents/R code, file")

sales <- read.csv("sales.csv",
                    stringsAsFactors = F, fileEncoding = "UTF-8")
head(sales)
##           시     구 성별   점포명 점포코드   연월일 판매건수
## 1 서울특별시 강남구   남 스탑버스   12AA02 20140101      103
## 2 서울특별시 강남구   여 키즈랜드   100101 20140101      309
## 3 서울특별시 강남구   여 키즈랜드   100101 20140101      365
## 4 서울특별시 강남구   남 스탑버스   12AA02 20140101      421
## 5 서울특별시 강남구   여 스탑버스   12AA02 20140101      413
## 6 서울특별시 강남구   남 키즈랜드   100101 20140101      428
colnames(sales) <- c("city", "district", "gender", "sales.nm", "sales.cd", "ymd", "sales.num")
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

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
  • substr을 사용하면 문자로 형태가 변함.

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
  • 내림차순은 -1을 곱해서 만듬
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로 돌리는 방법.

Funtion 만들기

funtion 1

plus1 <- function(x){
  x + 1
}

plus1(5)
## [1] 6

funtion 2

홀짝1 <- function(x){
  if(x %% 2 == 0){
    "짝수"
  }
  else{
    "홀수"
  }
  100
}

홀짝1(5)
## [1] 100
홀짝1(6)
## [1] 100
홀짝2 <- function(x){
  if(x %% 2 == 0){
    return("짝수")
  }
  else{
    return("홀수")
  }
  100
}

홀짝2(5)
## [1] "홀수"
홀짝2(6)
## [1] "짝수"
홀짝3 <- function(x){
  if(x %% 2 == 0){
    print("짝수")
  }
  else{
    print("홀수")
  }
  x/2
}

홀짝3(5)
## [1] "홀수"
## [1] 2.5
홀짝3(6)
## [1] "짝수"
## [1] 3

funtion 3

근의공식 <- function(a,b,c){
  #a*x^2 + b*x +c = 0
  root <- sqrt(b^2-4*a*c)
  (-b + c(root, -root))/2*a
}

근의공식(1,5,3)
## [1] -0.6972244 -4.3027756
근의공식 <- function(a,b,c){
  #a*x^2 + b*x +c = 0
  root <- sqrt(b^2-4*a*c)
  print(root)
  (-b + c(root, -root))/2*a
}

근의공식(1,5,3)
## [1] 3.605551
## [1] -0.6972244 -4.3027756

for

for 1

for(x in 1:100){
  print(x)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 25
## [1] 26
## [1] 27
## [1] 28
## [1] 29
## [1] 30
## [1] 31
## [1] 32
## [1] 33
## [1] 34
## [1] 35
## [1] 36
## [1] 37
## [1] 38
## [1] 39
## [1] 40
## [1] 41
## [1] 42
## [1] 43
## [1] 44
## [1] 45
## [1] 46
## [1] 47
## [1] 48
## [1] 49
## [1] 50
## [1] 51
## [1] 52
## [1] 53
## [1] 54
## [1] 55
## [1] 56
## [1] 57
## [1] 58
## [1] 59
## [1] 60
## [1] 61
## [1] 62
## [1] 63
## [1] 64
## [1] 65
## [1] 66
## [1] 67
## [1] 68
## [1] 69
## [1] 70
## [1] 71
## [1] 72
## [1] 73
## [1] 74
## [1] 75
## [1] 76
## [1] 77
## [1] 78
## [1] 79
## [1] 80
## [1] 81
## [1] 82
## [1] 83
## [1] 84
## [1] 85
## [1] 86
## [1] 87
## [1] 88
## [1] 89
## [1] 90
## [1] 91
## [1] 92
## [1] 93
## [1] 94
## [1] 95
## [1] 96
## [1] 97
## [1] 98
## [1] 99
## [1] 100

for 2

y = 0

for(x in 1:100){
  y = y + x
print(y)
  }
## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15
## [1] 21
## [1] 28
## [1] 36
## [1] 45
## [1] 55
## [1] 66
## [1] 78
## [1] 91
## [1] 105
## [1] 120
## [1] 136
## [1] 153
## [1] 171
## [1] 190
## [1] 210
## [1] 231
## [1] 253
## [1] 276
## [1] 300
## [1] 325
## [1] 351
## [1] 378
## [1] 406
## [1] 435
## [1] 465
## [1] 496
## [1] 528
## [1] 561
## [1] 595
## [1] 630
## [1] 666
## [1] 703
## [1] 741
## [1] 780
## [1] 820
## [1] 861
## [1] 903
## [1] 946
## [1] 990
## [1] 1035
## [1] 1081
## [1] 1128
## [1] 1176
## [1] 1225
## [1] 1275
## [1] 1326
## [1] 1378
## [1] 1431
## [1] 1485
## [1] 1540
## [1] 1596
## [1] 1653
## [1] 1711
## [1] 1770
## [1] 1830
## [1] 1891
## [1] 1953
## [1] 2016
## [1] 2080
## [1] 2145
## [1] 2211
## [1] 2278
## [1] 2346
## [1] 2415
## [1] 2485
## [1] 2556
## [1] 2628
## [1] 2701
## [1] 2775
## [1] 2850
## [1] 2926
## [1] 3003
## [1] 3081
## [1] 3160
## [1] 3240
## [1] 3321
## [1] 3403
## [1] 3486
## [1] 3570
## [1] 3655
## [1] 3741
## [1] 3828
## [1] 3916
## [1] 4005
## [1] 4095
## [1] 4186
## [1] 4278
## [1] 4371
## [1] 4465
## [1] 4560
## [1] 4656
## [1] 4753
## [1] 4851
## [1] 4950
## [1] 5050
y
## [1] 5050

for 3

y = 100

for(x in 1:10){
  y = y*1.03 
print(y)
  }
## [1] 103
## [1] 106.09
## [1] 109.2727
## [1] 112.5509
## [1] 115.9274
## [1] 119.4052
## [1] 122.9874
## [1] 126.677
## [1] 130.4773
## [1] 134.3916
y
## [1] 134.3916