R Select(), Filter(), Arrange(), Pipeline with Example
โก ะ ะพะทัะผะฝะธะน ะฟัะดััะผะพะบ
ะะธะฑัั, ััะปัััะฐััั ัะฐ ัะฟะพััะดะบัะฒะฐะฝะฝั ะฒ R โ ัะต ััะธ ะดัััะปะพะฒะฐ dplyr, ัะบั ะทะฒะพะดััั ััะตะนะผ ะดะฐะฝะธั ะดะพ ะฟะพัััะฑะฝะธั ะฒะฐะผ ััะพะฒะฟััะฒ, ััะดะบัะฒ ัะฐ ะฟะพััะดะบั. ะฆะตะน ะฟะพะบัะพะบะพะฒะธะน ะฟะพััะฑะฝะธะบ ะพะฑ'ัะดะฝัั ัั ะทะฐ ะดะพะฟะพะผะพะณะพั ะพะฟะตัะฐัะพัะฐ pipe ะฝะฐ ะฝะฐะฑะพัั ะดะฐะฝะธั ะฟัะพ ัะฐั ะฟัะพั ะพะดะถะตะฝะฝั ะท 205 ััะดะบัะฒ.

ะฉะพ ัะฐะบะต dplyr ะฒ R?
dplyr โ ัะต ะฟะฐะบะตั ะผะฐะฝัะฟัะปัะฒะฐะฝะฝั ะดะฐะฝะธะผะธ tidyverse. ะัะฝ ะทะฐะผัะฝัั ะดัะถะบะพะฒั ะฝะพัะฐััั base R ะท ะฝะตะฒะตะปะธะบะธะผ ะฝะฐะฑะพัะพะผ ะดัััะปัะฒ, ะบะพะถะฝะต ะท ัะบะธั ะฝะฐะทะฒะฐะฝะพ ะฝะฐ ัะตััั ะดัั, ัะบั ะฒะพะฝะพ ะฒะธะบะพะฝัั, ั ะบะพะถะฝะต ะท ัะบะธั ะฟัะธะนะผะฐั ััะตะนะผ ะดะฐะฝะธั ัะบ ัะฒัะน ะฟะตััะธะน ะฐัะณัะผะตะฝั. ะกะฐะผะต ัั ัะทะณะพะดะถะตะฝะฐ ัะพัะผะฐ ะดะพะทะฒะพะปัั ะพะฑ'ัะดะฝัะฒะฐัะธ ะดัััะปะพะฒะฐ ัะฐะทะพะผ.
| ะดัััะปะพะฒะพ | ะัั ะฝะฐ | ะฉะพ ะฒะพะฝะฐ ัะพะฑะธัั |
|---|---|---|
| ะฒะธะฑัะฐัะธ () | ะะพะปะพะฝะธ | ะะฑะตััะณะฐั ะฐะฑะพ ะฒะธะดะฐะปัั ะทะผัะฝะฝั |
| filter () | ััะดะธ | ะะฑะตััะณะฐั ััะดะบะธ, ัะพ ะฒัะดะฟะพะฒัะดะฐััั ัะผะพะฒั |
| ัะฟะพััะดะบัะฒะฐัะธ() | ััะดะธ | ะะผัะฝัั ะฟะพััะดะพะบ ััะดะบัะฒ ะฝะฐ ะพะดะธะฝ ะฐะฑะพ ะบัะปัะบะฐ ััะพะฒะฟััะฒ |
| ะผัััะฒะฐัะธ() | ะะพะปะพะฝะธ | ะกัะฒะพััั ะฐะฑะพ ะทะผัะฝัั ะทะผัะฝะฝั |
| ะฟัะดััะผัะฒะฐัะธ() | ะัั ัะฐะฑะปะธัั | ะะณะพััะฐั ะฑะฐะณะฐัะพ ััะดะบัะฒ ะฒ ะพะดะฝั ััะฐัะธััะธะบั |
| ะณััะฟัะฒะฐัะธ_ะทะฐ() | ะัั ัะฐะฑะปะธัั | ะ ะพะทะดัะปัั ะดะฐะฝั ัะฐะบะธะผ ัะธะฝะพะผ, ัะพะฑ ะฟัะทะฝััั ะดัััะปะพะฒะฐ ะฒะธะบะพะฝัะฒะฐะปะธัั ะดะปั ะบะพะถะฝะพั ะณััะฟะธ |
ะฆะตะน ะฟะพััะฑะฝะธะบ ะพั ะพะฟะปัั ะฟะตััั ััะธ ะดัััะปะพะฒะฐ, ะฐ ัะฐะบะพะถ ะฒะตัััะฐั. ะฝะฐะฒัะฐะปัะฝะธะน ะฟะพััะฑะฝะธะบ ะท ะฐะณัะตะณะฐัะฝะธั ััะฝะบััะน ะดะตัะฐะปัะฝะพ ัะพะทะณะปัะดะฐั group_by() ัะฐ summarize().
ะะฐะฑัั ะดะฐะฝะธั , ัะพ ะฒะธะบะพัะธััะพะฒัััััั ะฒ ััะพะผั ะฟะพััะฑะฝะธะบั
ะัะฑะปัะพัะตะบะฐ ะฟัะด ะฝะฐะทะฒะพั dplyr ะผัััะธัั ััะฝะฝั ะดัััะปะพะฒะฐ ะดะปั ะฝะฐะฒัะณะฐััั ะฒ ะฝะฐะฑะพัั ะดะฐะฝะธั . ะฃ ััะพะผั ะฟะพััะฑะฝะธะบั ะฒะธ ะฑัะดะตัะต ะฒะธะบะพัะธััะพะฒัะฒะฐัะธ ะฝะฐะฑัั ะดะฐะฝะธั Travel Time (ัะฐั ะฟะพะดะพัะพะถั). ะะฐะฑัั ะดะฐะฝะธั ะทะฐะฟะธััั ะฟะพัะทะดะบะธ, ัะบั ะฒะพะดัะน ะทะดัะนัะฝัั ะผัะถ ะดะพะผะพะผ ั ัะพะฑะพัะพั. ะฃ ะฝะฐะฑะพัั ะดะฐะฝะธั ั ัะพัะธัะฝะฐะดัััั ะทะผัะฝะฝะธั , ะทะพะบัะตะผะฐ:
- DayOfWeek: ะฒะธะทะฝะฐััะต ะดะตะฝั ัะธะถะฝั, ะบะพะปะธ ะฒะพะดัะน ะฒะธะบะพัะธััะพะฒัั ัะฒัะน ะฐะฒัะพะผะพะฑัะปั
- ะัะดััะฐะฝั: ะทะฐะณะฐะปัะฝะฐ ะฒัะดััะฐะฝั ัะปัั ั
- MaxSpeed: ะผะฐะบัะธะผะฐะปัะฝะฐ ัะฒะธะดะบัััั ะฟะพะดะพัะพะถั
- ะะฐะณะฐะปัะฝะธะน ัะฐั: ััะธะฒะฐะปัััั ัะปัั ั ะฒ ั ะฒะธะปะธะฝะฐั
ะะฐะฑัั ะดะฐะฝะธั ะผัััะธัั 205 ัะฟะพััะตัะตะถะตะฝั, ะฐ ะฟะพัะทะดะบะธ ะฒัะดะฑัะฒะฐะปะธัั ะท Monday ะดะพ ะฟ'ััะฝะธัั.
ะะตัั ะทะฐ ะฒัะต, ะฒะฐะผ ะฝะตะพะฑั ัะดะฝะพ:
- ะทะฐะฒะฐะฝัะฐะถะธัะธ ะฝะฐะฑัั ะดะฐะฝะธั
- ะฟะตัะตะฒััะธัะธ ััััะบัััั ะดะฐะฝะธั .
ะะดะฝะฐ ะทัััะฝะฐ ััะฝะบััั dplyr โ ัะต glimpse(). ะะพะฝะฐ ะฒัะดัะณัะฐั ัั ัะฐะผั ัะพะปั, ัะพ ะน str() ั ะฑะฐะทะพะฒะพะผั R, ะฐะปะต ะดััะบัั ะพะดะธะฝ ััะดะพะบ ะดะปั ะบะพะถะฝะพั ะทะผัะฝะฝะพั ะท ัะธะฟะพะผ ัะฐ ะฟะตััะธะผะธ ะบัะปัะบะพะผะฐ ะทะฝะฐัะตะฝะฝัะผะธ, ัะพ ะฝะฐะฑะฐะณะฐัะพ ะปะตะณัะต ัะบะฐะฝัะฒะฐัะธ ะฝะฐ ะฒะตะปะธะบะพะผั ะฝะฐะฑะพัั ะดะฐะฝะธั .
library(dplyr) PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv" df <- read.csv(PATH) glimpse(df)
ะฒะธั ัะด:
## Observations: 205 ## Variables: 14 ## $ X <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... ## $ Date <fctr> 1/6/2012, 1/6/2012, 1/4/2012, 1/4/2012, 1/3/20... ## $ StartTime <fctr> 16:37, 08:20, 16:17, 07:53, 18:57, 07:57, 17:3... ## $ DayOfWeek <fctr> Friday, Friday, Wednesday, Wednesday, Tuesday,... ## $ GoingTo <fctr> Home, GSK, Home, GSK, Home, GSK, Home, GSK, GS... ## $ Distance <dbl> 51.29, 51.63, 51.27, 49.17, 51.15, 51.80, 51.37... ## $ MaxSpeed <dbl> 127.4, 130.3, 127.4, 132.3, 136.2, 135.8, 123.2... ## $ AvgSpeed <dbl> 78.3, 81.8, 82.0, 74.2, 83.4, 84.5, 82.9, 77.5,... ## $ AvgMovingSpeed <dbl> 84.8, 88.9, 85.8, 82.9, 88.1, 88.8, 87.3, 85.9,... ## $ FuelEconomy <fctr> , , , , , , -, -, 8.89, 8.89, 8.89, 8.89, 8.89... ## $ TotalTime <dbl> 39.3, 37.9, 37.5, 39.8, 36.8, 36.8, 37.2, 37.9,... ## $ MovingTime <dbl> 36.3, 34.9, 35.9, 35.6, 34.8, 35.0, 35.3, 34.3,... ## $ Take407All <fctr> No, No, No, No, No, No, No, No, No, No, No, No... ## $ Comments <fctr> , , , , , , , , , , , , , , , Put snow tires o...
ะะผัะฝะฝะฐ Comments ัะฒะฝะพ ะฟะพััะตะฑัั ะดะตัะฐะปัะฝััะพะณะพ ัะพะทะณะปัะดั: ะฟะตััั ัะฟะพััะตัะตะถะตะฝะฝั ะฒัั ะฟะพัะพะถะฝั.
sum(df$Comments =="")
Code ะะพััะฝะตะฝะฝั
- sum(df$Comments == โโ): ะัะดัะฐั ะพะฒัั ะบัะปัะบัััั ัะฟะพััะตัะตะถะตะฝั, ัะพ ะดะพััะฒะฝัั ะฟะพัะพะถะฝัะพะผั ััะดะบั ั ััะพะฒะฟัั ะบะพะผะตะฝัะฐััะฒ df
ะฒะธั ัะด:
## [1] 181
ะััะปั ะทะฐะฒะฐะฝัะฐะถะตะฝะฝั ะดะฐะฝะธั ะฟะพัะฝััั ะท ะดัััะปะพะฒะฐ, ัะบะต ะพะฑััะทะฐั ััะพะฒะฟัั.
ะฒะธะฑัะฐัะธ ()
ะะธ ะฟะพัะฝะตะผะพ ะท ะดัััะปะพะฒะฐ select(). ะะฐะผ ะฝะต ะพะฑะพะฒโัะทะบะพะฒะพ ะฟะพัััะฑะฝั ะฒัั ะทะผัะฝะฝั, ั ะดะพะฑัะต ะฒะธะฑะธัะฐัะธ ะปะธัะต ัั ะทะผัะฝะฝั, ัะบั ะฒะธ ะฒะฒะฐะถะฐััะต ัะตะปะตะฒะฐะฝัะฝะธะผะธ.
ะฃ ะฝะฐั ะฒัะดัััะฝั 181 ัะฟะพััะตัะตะถะตะฝะฝั, ะผะฐะนะถะต 90 ะฒัะดัะพัะบัะฒ ะฝะฐะฑะพัั ะดะฐะฝะธั . ะฏะบัะพ ะฒะธ ะฒะธัััะธัะต ัั ะฒะธะบะปััะธัะธ, ะฒะธ ะฝะต ะทะผะพะถะตัะต ะฟัะพะดะพะฒะถะธัะธ ะฐะฝะฐะปัะท.
ะะฝัะฐ ะผะพะถะปะธะฒัััั โ ะฒัะดะบะธะฝััะธ ะทะผัะฝะฝั Comment ะทะฐ ะดะพะฟะพะผะพะณะพั ะดัััะปะพะฒะฐ select().
ะะธ ะผะพะถะตะผะพ ะฒะธะฑะธัะฐัะธ ะทะผัะฝะฝั ััะทะฝะธะผะธ ัะฟะพัะพะฑะฐะผะธ ะทะฐ ะดะพะฟะพะผะพะณะพั select(). ะะฐัะฒะฐะถัะต, ัะพ ะฟะตััะธะผ ะฐัะณัะผะตะฝัะพะผ ั ะฝะฐะฑัั ะดะฐะฝะธั .
- `select(df, A, B ,C)`: Select the variables A, B and C from df dataset. - `select(df, A:C)`: Select all variables from A to C from df dataset. - `select(df, -C)`: Exclude C from the dataset from df dataset.
ะะธ ะผะพะถะตัะต ัะบะพัะธััะฐัะธัั ััะตััะผ ัะฟะพัะพะฑะพะผ ะฒะธะบะปััะตะฝะฝั ะทะผัะฝะฝะพั Comments.
step_1_df <- select(df, -Comments) dim(df)
ะฒะธั ัะด:
## [1] 205 14
dim(step_1_df)
ะฒะธั ัะด:
## [1] 205 13
ะัะธะณัะฝะฐะปัะฝะธะน ะฝะฐะฑัั ะดะฐะฝะธั ะผัััะธัั 14 ััะฝะบััะน, ะฐ step_1_df โ 13.
ะะพะฟะพะผัะถะฝั ััะฝะบััั select() ะฒ R
ะะผะตะฝัะฒะฐะฝะฝั ะบะพะถะฝะพะณะพ ััะพะฒะฟัั ััะฐั ะฝะตะฟัะฐะบัะธัะฝะธะผ, ะบะพะปะธ ะฝะฐะฑัั ะดะฐะฝะธั ะผัััะธัั ะดะตัััะบะธ ะทะผัะฝะฝะธั . dplyr ะฟะพััะฐัะฐััััั ะท ะฟะพะผััะฝะธะบะฐะผะธ, ัะบั ะฒะธะฑะธัะฐััั ััะพะฒะฟัั ะทะฐ ัะฐะฑะปะพะฝะพะผ ะฐะฑะพ ะทะฐ ัะธะฟะพะผ.
| ะะพะผััะฝะธะบ | ะะธะฑะธัะฐั ััะพะฒะฟัั, ัะบั | ะัะธะบะปะฐะด |
|---|---|---|
| ะฟะพัะธะฝะฐััััั_ะท() | ะะพัะฝััั ะท ััะดะบะฐ | ะฒะธะฑัะฐัะธ(df, ะฟะพัะธะฝะฐััััั_ะท(โะกะตัะตะดะฝะตโ)) |
| ะทะฐะบัะฝััััััั_ะฝะฐ() | ะะฐะบัะฝัะธัะธ ะผะพััะทะบะพั | ะฒะธะฑัะฐัะธ(df, ะทะฐะบัะฝััััััั_ะฒ("ะงะฐั")) |
| ะผัััะธัั() | ะัััะธัะธ ััะดะพะบ ะฑัะดั-ะดะต | ะฒะธะฑัะฐัะธ(df, ะผัััะธัั(โะจะฒะธะดะบััััโ)) |
| ะฒัะดะฟะพะฒัะดะฐั() | ะัััะฐะฒะปะตะฝะฝั ัะตะณัะปััะฝะพะณะพ ะฒะธัะฐะทั | ะฒะธะฑัะฐัะธ(df, ะทะฑัะณะธ(โ^ะะฐะบัะธะผัะผ|^ะกะตัะตะดะฝัโ)) |
| ะดะต() | ะะฐะดะพะฒะพะปัะฝะธัะธ ะฒะธะผะพะณะธ ัะธะฟะพะฒะพะณะพ ะฒะธะฟัะพะฑัะฒะฐะฝะฝั | ะฒะธะฑัะฐัะธ(df, ะดะต(ั.ัะธัะปะพะฒะธะผ)) |
| ะฒัะต() | ะฉะต ะฝะต ะฝะฐะทะฒะฐะปะธ | ะฒะธะฑัะฐัะธ(df, TotalTime, ะฒัะต()) |
# Keep only the timing columns df %>% select(ends_with("Time")) # Keep every numeric column df %>% select(where(is.numeric)) # Move TotalTime to the front, keep the rest in place df %>% select(TotalTime, everything())
ะฉะต ะดะฒะฐ ะดัััะปะพะฒะฐ ะฟัะธัะพะดะฝะพ ะฟะพัะดะฝัััััั ะท select(). ะะธะบะพัะธััะพะฒัะนัะต rename(new_name = old_name) ะดะปั ะฟะตัะตะผััะตะฝะฝั ััะพะฒะฟัั ะฑะตะท ะฒะธะดะฐะปะตะฝะฝั.ping ัะฝัั, ะฐ relocate() โ ะดะปั ะฟะตัะตะผััะตะฝะฝั ััะพะฒะฟััะฒ ะฑะตะท ะฟะตัะตัะฐั ัะฒะฐะฝะฝั ัั ัััั .
filter ()
ะัััะปะพะฒะพ filter() ะทะฑะตััะณะฐั ัะฟะพััะตัะตะถะตะฝะฝั, ัะบั ะทะฐะดะพะฒะพะปัะฝัััั ัะผะพะฒั. filter() ะฟัะฐััั ัะพัะฝะพ ัะฐะบ ัะฐะผะพ, ัะบ select(), ัะฟะพัะฐัะบั ะฒะธ ะฟะตัะตะดะฐััะต ััะตะนะผ ะดะฐะฝะธั , ะฐ ะฟะพััะผ ัะผะพะฒั, ัะพะทะดัะปะตะฝั ะบะพะผะพั:
filter(df, condition)
arguments:
- df: dataset used to filter the data
- condition: Condition used to filter the data
ะะดะธะฝ ะบัะธัะตััะน
ะะตัั ะทะฐ ะฒัะต, ะฒะธ ะผะพะถะตัะต ะฟัะดัะฐั ัะฒะฐัะธ ะบัะปัะบัััั ัะฟะพััะตัะตะถะตะฝั ะฝะฐ ะบะพะถะฝะพะผั ััะฒะฝั ัะฐะบัะพัะฝะพั ะทะผัะฝะฝะพั.
table(step_1_df$GoingTo)
Code ะะพััะฝะตะฝะฝั
- table(): ะัะดัะฐั ะพะฒัั ะบัะปัะบัััั ัะฟะพััะตัะตะถะตะฝั ะฝะฐ ััะฒะฝั. ะััะบัััััั ัะฐะบัะพั ะฐะฑะพ ัะธะผะฒะพะปัะฝะฐ ะทะผัะฝะฝะฐ
- table(step_1_df$GoingTo): ะัะดัะฐั ัะฒะฐัะธ ะบัะปัะบัััั ะฟะพัะทะดะพะบ ะดะพ ะบะพะถะฝะพะณะพ ะฟัะฝะบัั ะฟัะธะทะฝะฐัะตะฝะฝั
ะฒะธั ัะด:
## ## GSK Home ## 105 100
ะคัะฝะบััะพะฝะฐะปัะฝะฐ ัะฐะฑะปะธัั() ะฒะบะฐะทัั, ัะพ 105 ะฟะพัะทะดะพะบ ะนะดััั ะดะพ GSK ั 100 ะดะพ ะะพะผั.
ะะธ ะผะพะถะตะผะพ ะฒัะดััะปััััะฒะฐัะธ ะดะฐะฝั, ัะพะฑ ะฟะพะฒะตัะฝััะธ ะพะดะธะฝ ะฝะฐะฑัั ะดะฐะฝะธั ัะท 105 ัะฟะพััะตัะตะถะตะฝะฝัะผะธ ัะฐ ัะฝัะธะน ัะท 100 ัะฟะพััะตัะตะถะตะฝะฝัะผะธ.
# Select observations where GoingTo == Home select_home <- filter(df, GoingTo == "Home") dim(select_home)
ะฒะธั ัะด:
## [1] 100 14
# Select observations where GoingTo == GSK (work) select_work <- filter(df, GoingTo == "GSK") dim(select_work)
ะฒะธั ัะด:
## [1] 105 14
ะัะปัะบะฐ ะบัะธัะตัััะฒ
ะะธ ะผะพะถะตะผะพ ััะปััััะฒะฐัะธ ะฝะฐะฑัั ะดะฐะฝะธั ะทะฐ ะบัะปัะบะพะผะฐ ะบัะธัะตัััะผะธ. ะะฐะฟัะธะบะปะฐะด, ะฒะธ ะผะพะถะตัะต extracัะฟะพััะตัะตะถะตะฝะฝั, ะดะต ะฟัะฝะบัะพะผ ะฟัะธะทะฝะฐัะตะฝะฝั ั ะัะผ, ะฐ ะฟะพัะทะดะบะฐ ะฒัะดะฑัะปะฐัั ะฒ ัะตัะตะดั.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday") dim(select_home_wed)
ะฒะธั ัะด:
## [1] 23 14
23 ัะฟะพััะตัะตะถะตะฝะฝั ะฒัะดะฟะพะฒัะดะฐะปะธ ััะพะผั ะบัะธัะตััั.
ะะฐะณะฐะปัะฝั ัะผะพะฒะธ ััะปัััะฐ() ัะฐ Operaัะพัะธ ะฒ ะ
filter() ะทะฑะตััะณะฐั ะบะพะถะตะฝ ััะดะพะบ, ะดะปั ัะบะพะณะพ ัะผะพะฒะฐ ะผะฐั ะทะฝะฐัะตะฝะฝั TRUE. ะ ัะดะบะธ, ัะบั ะผะฐััั ะทะฝะฐัะตะฝะฝั NA, ะฒัะดะบะธะดะฐััััั, ัะพ ะดะธะฒัั ะฑัะปัััััั ะฝะพะฒะฐัะบัะฒ.
| Operaัะพั | ะกะตะฝั | ะัะธะบะปะฐะด |
|---|---|---|
| == | ะะพััะฒะฝัั | ััะปััั(df, GoingTo == โะะพะดะพะผัโ) |
| != | ะะต ะดะพััะฒะฝัั | ััะปััั(df, ะะตะฝัะขะธะถะฝั != โMondayยป) |
| & | ะ ะพะฑะธะดะฒะฐ ะผะฐััั ะฑััะธ ะฒะธะบะพะฝะฐะฝั | ััะปััั(df, ะัะดััะฐะฝั > 50 ัะฐ ะะฐะบัะธะผะฐะปัะฝะฐะจะฒะธะดะบัััั > 130) |
| | | ะะะ, ะฑัะดั-ัะบะธะน ะท ะฝะธั ะผะพะถะต ะผะฐัะธ ะผัััะต | ััะปััั(df, ะะตะฝัะขะธะถะฝั == โMondayโ | ะะตะฝัะขะธะถะฝั == โะโััะฝะธััโ) |
| % ั% | ะะฑัะณะฐััััั ะท ะฑัะดั-ัะบะธะผ ะทะฝะฐัะตะฝะฝัะผ ั ะฒะตะบัะพัั | ััะปััั(df, ะะตะฝัะขะธะถะฝั %ะฒ% c(โMondayยซยป, ยซะ'ััะฝะธััยป)) |
| ะผัะถ() | ะะพััะฐะฟะปัั ะฒ ัะธัะปะพะฒะธะน ะดัะฐะฟะฐะทะพะฝ | ััะปััั(df, ะผัะถ(ะัะดััะฐะฝั, 48, 52)) |
| is.na() | ะัะดัััะฝั ะทะฝะฐัะตะฝะฝั | ััะปััั(df, is.na(ะะธััะฐัะฐะะฐะปะธะฒะฐ)) |
ะขัะธ ะทะฒะธัะบะธ ะทะฐะฟะพะฑัะณะฐััั ะฑัะปััะพััั ะฟะพะผะธะปะพะบ filter().
- ะะธะบะพัะธััะพะฒัะนัะต %in% ะทะฐะผัััั ะปะฐะฝััะณะพะฒะพะณะพ ะะะ. ััะปััั(df, ะะตะฝัะขะธะถะฝั %ะฒ% c(โMondayยซยป, ยซะโััะฝะธััยป)) ะบะพัะพััะต ั ะนะพะณะพ ะฝะฐะฑะฐะณะฐัะพ ะฒะฐะถัะต ะฟะพะผะธะปะธัะธัั, ะฝัะถ ะดะฒะฐ ะฟะพััะฒะฝัะฝะฝั ==, ะทโัะดะฝะฐะฝั ะฒะตััะธะบะฐะปัะฝะพั ัะธัะบะพั.
- ะัะบะพะปะธ ะฝะต ะฟะตัะตะฒัััะนัะต ะฒัะดัััะฝั ะทะฝะฐัะตะฝะฝั ะทะฐ ะดะพะฟะพะผะพะณะพั ==. ะะธัะฐะท x == NA ะฟะพะฒะตััะฐั NA, ะฐ ะฝะต TRUE, ัะพะผั ััะดะพะบ ะฐะฒัะพะผะฐัะธัะฝะพ ะฒะธะดะฐะปัััััั. ะะฐัะพะผัััั ะฒะธะบะพัะธััะพะฒัะนัะต is.na(x).
- ะะพะผะธ ะพะทะฝะฐัะฐััั ะ. filter(df, a, b) ัะดะตะฝัะธัะฝะธะน filter(df, a & b), ัะพะผั ะฝะฐะฒะตะดะตะฝะธะน ัะฐะฝััะต ะฟัะธะบะปะฐะด ั ััะพะผั ะฟะพััะฑะฝะธะบั ะฟัะฐััั ะฒ ะฑัะดั-ัะบะพะผั ะฒะธะฟะฐะดะบั.
ะขััะฑะฐ Operaัะพั ั dplyr
ะกัะฒะพัะตะฝะฝั ะฝะฐะฑะพัั ะดะฐะฝะธั ะฒะธะผะฐะณะฐั ะฑะฐะณะฐััะพั ะพะฟะตัะฐััะน, ัะฐะบะธั ัะบ:
- ัะผะฟะพัั
- ะทะปะธััั
- ะฒะธะฑะธัะฐั
- ััะปัััะฐััั
- ั ัะฐะบ ะดะฐะปั
ะัะฑะปัะพัะตะบะฐ dplyr ะฟะพััะฐัะฐััััั ะท ะฟัะฐะบัะธัะฝะธะผ ะพะฟะตัะฐัะพัะพะผ %>%, ัะบะธะน ะฝะฐะทะธะฒะฐััััั the ัััะฑะฐะฆะต ัะพะฑะธัั ะผะฐะฝัะฟัะปัะฒะฐะฝะฝั ะดะฐะฝะธะผะธ ัะธััััะธะผ, ัะฒะธะดัะธะผ ัะฐ ะผะตะฝั ัั ะธะปัะฝะธะผ ะดะพ ะฟะพะผะธะปะพะบ.
ะฆะตะน ะพะฟะตัะฐัะพั ั ะบะพะดะพะผ, ัะบะธะน ะฒะธะบะพะฝัั ะบัะพะบะธ ะฑะตะท ะทะฑะตัะตะถะตะฝะฝั ะฟัะพะผัะถะฝะธั ะบัะพะบัะฒ ะฝะฐ ะถะพัััะบะพะผั ะดะธัะบั. ะฏะบัะพ ะฒะธ ะฟะพะฒะตัะฝะตัะตัั ะดะพ ะฝะฐัะพะณะพ ะฟัะธะบะปะฐะดั ะฒะธัะต, ะฒะธ ะผะพะถะตัะต ะฒะธะฑัะฐัะธ ััะบะฐะฒั ะทะผัะฝะฝั ัะฐ ะฒัะดััะปััััะฒะฐัะธ ัั . ะฃ ะฝะฐั ั ััะธ ะบัะพะบะธ:
- ะัะพะบ 1. ะะผะฟะพัััะนัะต ะดะฐะฝั: ัะผะฟะพัััะนัะต ะดะฐะฝั GPS
- ะัะพะบ 2: ะะธะฑะตัััั ะดะฐะฝั: ะฒะธะฑะตัััั GoingTo ัะฐ DayOfWeek
- ะัะพะบ 3: ะคัะปััััะนัะต ะดะฐะฝั: ะฟะพะฒะตััะฐะนัะตัั ะปะธัะต ะดะพะดะพะผั ัะฐ ะฒ ัะตัะตะดั
ะะธ ะผะพะถะตะผะพ ะฒะธะบะพัะธััะฐัะธ ะฒะฐะถะบะธะน ัะฟะพััะฑ ะทัะพะฑะธัะธ ัะต:
# Step 1 step_1 <- read.csv(PATH) # Step 2 step_2 <- select(step_1, GoingTo, DayOfWeek) # Step 3 step_3 <- filter(step_2, GoingTo == "Home", DayOfWeek == "Wednesday") head(step_3)
ะฒะธั ัะด:
## GoingTo DayOfWeek ## 1 Home Wednesday ## 2 Home Wednesday ## 3 Home Wednesday ## 4 Home Wednesday ## 5 Home Wednesday ## 6 Home Wednesday
ะฆะต ะฝะตะทัััะฝะธะน ัะฟะพััะฑ ะปะฐะฝััะณะพะฒะพะณะพ ะท'ัะดะฝะฐะฝะฝั ะฑะฐะณะฐััะพั ะพะฟะตัะฐััะน. ะะพะถะตะฝ ะฟัะพะผัะถะฝะธะน ัะตะทัะปััะฐั ะทะฐะปะธัะฐััััั ะฒ ัะตัะตะดะพะฒะธัั, ะฐ ะฝะฐะทะฒะธ ัะฒะธะดะบะพ ะฒััะฐัะฐััั ะฑัะดั-ัะบะต ะทะฝะฐัะตะฝะฝั.
ะะธะบะพัะธััะพะฒัะนัะต ะทะฐะผัััั ััะพะณะพ ะพะฟะตัะฐัะพั ะบะฐะฝะฐะปั %>%. ะะธ ะดะฐััะต ัะผ'ั ััะตะนะผั ะดะฐะฝะธั ะพะดะธะฝ ัะฐะท ะฝะฐ ะฟะพัะฐัะบั, ั ะบะพะถะตะฝ ะบัะพะบ ะฒะธะฟะปะธะฒะฐั ะท ะฝัะพะณะพ.
ะัะฝะพะฒะฝะธะน ัะธะฝัะฐะบัะธั ะบะพะฝะฒะตััะฐ
New_df <- df %>% step 1 %>% step 2 %>% ... arguments - New_df: Name of the new data frame - df: Data frame used to compute the step - step: Instruction for each step - Note: the last instruction does not need a trailing `%>%`, because nothing follows it - Note: assigning the result to a new object is optional. Without it, the output prints in the console.
ะะธ ะผะพะถะตัะต ััะฒะพัะธัะธ ัะฒะพั ะฟะตััั ัััะฑั, ะดะพััะธะผัััะธัั ะบัะพะบัะฒ, ะฟะตัะตัะฐั ะพะฒะฐะฝะธั ะฒะธัะต.
# Create the data frame filter_home_wed.It will be the object return at the end of the pipeline filter_home_wed <- #Step 1 read.csv(PATH) %>% #Step 2 select(GoingTo, DayOfWeek) %>% #Step 3 filter(GoingTo == "Home",DayOfWeek == "Wednesday") identical(step_3, filter_home_wed)
ะฒะธั ัะด:
## [1] TRUE
ะะฒะฐ ะพะฑ'ัะบัะธ ัะดะตะฝัะธัะฝั, ัะพะผั ัััะฑะฐ ะฒะธะดะฐะปะฐ ะฐะฑัะพะปััะฝะพ ะพะดะฝะฐะบะพะฒะธะน ัะตะทัะปััะฐั ะฒ ะพะดะฝะพะผั ัะธัะฐะฑะตะปัะฝะพะผั ะพะฟะตัะฐัะพัั.
ัะฟะพััะดะบัะฒะฐัะธ()
ะะตัะตะนะดััั ะฝะฐ ะฒะบะปะฐะดะบั ะฟะพะฟะตัะตะดะฝัะน ะฝะฐะฒัะฐะปัะฝะธะน ะฟะพััะฑะฝะธะบ, ะฒะธ ะดัะทะฝะฐััะตัั, ัะบ ัะพัััะฒะฐัะธ ะทะฝะฐัะตะฝะฝั ะทะฐ ะดะพะฟะพะผะพะณะพั ััะฝะบััั sort(). ะัะฑะปัะพัะตะบะฐ dplyr ะผะฐั ััะฝะบััั ัะพัััะฒะฐะฝะฝั. ะฆะต ััะดะพะฒะพ ะฟัะฐััั ะท ะบะพะฝะฒะตััะพะผ. ะัััะปะพะฒะพ arrange() ะผะพะถะต ะทะผัะฝะธัะธ ะฟะพััะดะพะบ ะพะดะฝะพะณะพ ะฐะฑะพ ะฑะฐะณะฐััะพั ััะดะบัะฒ, ะฐะฑะพ ะทะฐ ะทัะพััะฐะฝะฝัะผ (ะทะฐ ะทะฐะผะพะฒััะฒะฐะฝะฝัะผ), ะฐะฑะพ ะทะฐ ัะฟะฐะดะฐะฝะฝัะผ.
- `arrange(A)`: Ascending sort of variable A - `arrange(A, B)`: Ascending sort of variable A and B - `arrange(desc(A), B)`: Descending sort of variable A and ascending sort of B
ะะธ ะผะพะถะตะผะพ ัะพัััะฒะฐัะธ ะฒัะดััะฐะฝั ะทะฐ ะฟัะฝะบัะพะผ ะฟัะธะทะฝะฐัะตะฝะฝั.
# Sort by destination and distance step_2_df <- step_1_df %>% arrange(GoingTo, Distance) head(step_2_df)
ะฒะธั ัะด:
## X Date StartTime DayOfWeek GoingTo Distance MaxSpeed AvgSpeed ## 1 193 7/25/2011 08:06 Monday GSK 48.32 121.2 63.4 ## 2 196 7/21/2011 07:59 Thursday GSK 48.35 129.3 81.5 ## 3 198 7/20/2011 08:24 Wednesday GSK 48.50 125.8 75.7 ## 4 189 7/27/2011 08:15 Wednesday GSK 48.82 124.5 70.4 ## 5 95 10/11/2011 08:25 Tuesday GSK 48.94 130.8 85.7 ## 6 171 8/10/2011 08:13 Wednesday GSK 48.98 124.8 72.8 ## AvgMovingSpeed FuelEconomy TotalTime MovingTime Take407All ## 1 78.4 8.45 45.7 37.0 No ## 2 89.0 8.28 35.6 32.6 Yes ## 3 87.3 7.89 38.5 33.3 Yes ## 4 77.8 8.45 41.6 37.6 No ## 5 93.2 7.81 34.3 31.5 Yes ## 6 78.8 8.54 40.4 37.3 No
ะัััะปะพะฒะฐ dplyr ะฒ R: ะะพัะพัะบะธะน ะดะพะฒัะดะฝะธะบ
ะฃ ัะฐะฑะปะธัั ะฝะธะถัะต ะฟะตัะตะปััะตะฝะพ ะฒัั ะดัััะปะพะฒะฐ, ัะพ ะฒะธะบะพัะธััะพะฒัััััั ะฒ ััะพะผั ะฟะพััะฑะฝะธะบั, ะท ัะธะฝัะฐะบัะธัะพะผ ัะฐ ัะธะผ, ัะพ ะฟะพะฒะตััะฐั ะบะพะถะตะฝ ะฒะธะบะปะธะบ:
| ะดัััะปะพะฒะพ | ะะตัะฐ | Code | ะะพััะฝะตะฝะฝั |
|---|---|---|---|
| ะพะณะปัะดะฐัะธ | ะฟะตัะตะฒัััะต ััััะบัััั df |
glimpse(df)
|
ะขะต ัะฐะผะต ะฟัะธะทะฝะฐัะตะฝะฝั, ัะพ ะน str(), ะปะตะณัะต ัะธัะฐัะธ |
| ะฒะธะฑัะฐัะธ () | ะะธะฑะตัััั/ะฒะธะบะปััััั ะทะผัะฝะฝั |
select(df, A, B ,C)
|
ะะธะฑะตัััั ะทะผัะฝะฝั A, B ั C |
select(df, A:C)
|
ะะธะฑะตัััั ััั ะทะผัะฝะฝั ะฒัะด A ะดะพ C | ||
select(df, -C)
|
ะะธะบะปััะธัะธ C | ||
| filter () | ะะฑะตััะณะฐะนัะต ััะดะบะธ, ัะพ ะฒัะดะฟะพะฒัะดะฐััั ะพะดะฝัะน ะฐะฑะพ ะบัะปัะบะพะผ ัะผะพะฒะฐะผ |
filter(df, condition1)
|
ะะดะฝะฐ ัะผะพะฒะฐ |
filter(df, condition1 & condition2)
|
ะะฒั ัะผะพะฒะธ, ะฟะพัะดะฝะฐะฝั ะท ะ | ||
| ัะฟะพััะดะบัะฒะฐัะธ() | ะกะพัััะนัะต ะฝะฐะฑัั ะดะฐะฝะธั ะทะฐ ะพะดะฝััั ะฐะฑะพ ะฑะฐะณะฐััะผะฐ ะทะผัะฝะฝะธะผะธ |
arrange(A)
|
ะกะพัััะฒะฐะฝะฝั ะทะผัะฝะฝะพั ะ ะทะฐ ะทัะพััะฐะฝะฝัะผ |
arrange(A, B)
|
ะกะพัััะฒะฐะฝะฝั ะทะฐ ะทัะพััะฐะฝะฝัะผ ะทะผัะฝะฝะธั A ั B | ||
arrange(desc(A), B)
|
ะกะพัััะฒะฐะฝะฝั ะทะฐ ัะฟะฐะดะฐะฝะฝัะผ ะทะผัะฝะฝะพั A ัะฐ ัะพัััะฒะฐะฝะฝั ะทะฐ ะทัะพััะฐะฝะฝัะผ B | ||
| %>% | ะกัะฒะพัััั ะบะพะฝะฒะตัั ะผัะถ ะบะพะถะฝะธะผ ะบัะพะบะพะผ |
step 1 %>% step 2 %>% step 3 |
