Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 조건문
- javascript
- sqldf
- 점프투장고
- react
- input함수
- 자료형
- summarise()
- pycharm
- COUNT()
- 멤버십 연산자
- vs code
- sd()
- notion
- 반복문
- match case
- 동일성 연산자
- Swift
- mutate()
- python
- f-string
- 별찍기
- Django
- 소수출력
- group_by()
- inflearn
- while
- 제어문
- ReactNative
- R 데이터 분석
Archives
- Today
- Total
✏️
221125 | R 데이터 분석 / filter() / select() / arrange() 본문
filter() : 행 추출하기
## 1) filter() : 행 추출하기 ----
# class가 6인 경우
my_ss %>%
filter(class == 6)
# class가 2와 3인 경우
my_ss %>%
filter(class == 2 | class == 3)
# class가 2와 3이 아닌 경우
my_ss %>%
filter(class != 2 & class != 3) %>%
pull(class) # vector return
my_ss %>%
filter(class != 2 & class != 3) %>%
select(class) # df return
# java가 80점 이상이면서 class가 3인 경우
my_ss %>%
filter(java >= 80 & class == 3) %>%
head()
# java 또는 eng가 80점 이상이면서 class가 5인 경우
my_ss %>%
filter(java | eng >= 80, class == 5) %>%
select(java, eng, class)
my_ss %>%
filter(java >= 80 | eng >= 80, class == 5)
# class가 1,3,5인 경우
my_ss %>%
filter(class == 1 | class == 3 | class == 5)
my_ss %>%
filter(class %in% c(1,3,5)) %>%
select(class) %>% unique()
select() : 열 추출하기
## 2) select() 열 추출하기 ----
# id와 database 출력
select(my_ss, id, database) # 방법1 : (변수명,조회할 컬럼명1, 컬럼명2, ...)
names(my_ss)
my_ss %>%
select(id, database) # 방법2
# 모든 컬럼 조회
my_ss %>%
select(everything())
# eng와 database 빼고
my_ss %>%
select(-eng, -database) %>% head(3)
# class가 2인 학생들의 java와 db성적
my_ss %>%
filter(class == 2) %>%
select(class, java, database)
Q. 예제1
# Q.
# gglot2::mpg를 활용하여 아래 내용을 분석하세요.
# 조건1. 배기량별 고속도로 연비 displ(배기량)이 5~6인 자동차의 hwy(고속도로 연비)의 평균
# 조건2. hyundai와 lincoln 제조사(manufacturer)의 도시연비(cty) 평균비교
search()
library(ggplot2)
my_mpg <- ggplot2::mpg
names(my_mpg)
# 1)
my_t1 <- my_mpg %>%
select(1:3, hwy) %>% # 컬럼 1번부터 3번 + hwy도. 총 4개 컬럼 보여주라는 뜻.
filter(between(displ,5,6))
names(my_t1) # 위에서 select로 선택한 컬럼들 이름 보여줌.
mean(my_t1$hwy)
# 2) 방법1
unique(my_mpg$manufacturer) # 제조사명 하나씩만 보여주는.
names(my_mpg) # my_mpg의 모든 컬럼명 보여주는.
my_mpg %>%
filter(manufacturer %in%
c("lincoln","hyundai")) %>% # 제조사명이 링컨 현대에 포함되면
select(1,8) %>% # 컬럼명 1번:manufacturer / 8번:cty 열만 보여줘라.
group_by(manufacturer) %>% # 전체 하나의 평균이 아닌 각자의 평균을 구하기 위한 과정.
summarise(m_cty = mean(cty))
# 2) 방법2 : 변수를 만들어서 각각 평균을 구하는 방법
avg2 <- mpg_d %>%
filter(manufacturer == "hyundai")
avg3 <- mpg_d %>%
filter(manufacturer == "lincoln")
mean(avg2$cty)
mean(avg3$cty)
# 3) jeep, land rover, dodge 평균-hwy
# 3개 차종 전체 평균 구하기
unique(my_mpg$manufacturer)
names(my_mpg)
mean((my_mpg %>%
filter(manufacturer %in%
c("jeep", "land rover", "dodge")))$hwy)
my_mpg %>%
filter(manufacturer %in%
c("jeep", "land rover", "dodge")) %>%
summarise(m_hwy = mean(hwy))
# 3개 차종, 각각의 평균
my_mpg %>%
filter(manufacturer %in%
c("jeep", "land rover", "dodge")) %>%
group_by(manufacturer) %>%
summarise(mean_hwy = mean(hwy))
Q. 예제2
# Q.
# ggplot2::mpg를 활용하여 아래 내용을 확인하시오.
# 1. mpg dataset의 아래 변수만 복사하여 new dataset을 생성하시오.
#+ manufacturer(제조사), class(자동차 종류), cty(도시연비)
# 2. 1번 dataset에서 class(자동차종류)간의 평균 cty(도시연비)를 추출하시오
#+ 비교대상 class: pickup, suv
# 1)
my_mpg
names(my_mpg)
my_mpg2 <- my_mpg %>% # 새 dataset 이름 : my_mpg2
select(1,8,11)
View(my_mpg2)
# 2)
my_mpg2 %>%
filter(class %in% c("pickup", "suv")) %>% # suv랑 pickup만 뽑아내기.
group_by(class) %>%
summarise(mean_cty=mean(cty))
# summarise 사용x
avg4 <- my_mpg2 %>%
filter(class == "pickup")
avg5 <- my_mpg2 %>%
filter(class == "suv")
mean(avg4$cty)
mean(avg5$cty)
# 교수님 답
# pickup, suv
unique(my_mpg2$class)
# Q2-1 dplyr + summarise() 사용o
my_mpg2 %>%
filter(class %in% c("suv", "pickup")) %>%
summarise(mean(cty))
# Q2-2 dplyr + summarise() 사용x
names(mpg2)
(my_mpg2 %>%
filter(class %in% c("suv", "pickup")))$cty
mean((my_mpg2 %>%
filter(class %in% c("suv", "pickup")))$cty)
# Q2-3 group by + dplyr::
my_mpg2 %>%
filter(class %in% c("suv", "pickup")) %>%
group_by(class) %>%
summarise(mean(cty))
# Q2-4 group by + SQL
library(sqldf)
names(my_mpg2)
my_sql <- sqldf("
select class, avg(cty) as avg_hwy
from my_mpg2
where class in ('suv', 'pickup')
group by class
")
my_sql
arrange()
## 3) arrange() ----
#+ SQL : order by
my_exam2 <- read.csv("dts/ss_exam.csv")
# class와 eng 정렬 (오름)
names(my_exam2)
head(my_exam2)
ls()
unique(my_exam2$id) %>% length()
unique(my_exam2$class) %>% length()
my_exam2 %>%
arrange(class, eng) %>%
select(class,eng)
# class(내림)와 eng 정렬(오름)
#+ desc(변수명), -숫자변수명
my_exam2 %>%
arrange(-class, eng) %>%
select(class,eng)
Q. 예제3
# Q.
# ggplot2::mpg 를 활용하여 다음 요청내용을 출력하세요.
# library: ggplot2, dplyr
search()
# 1) hyundai 차량 중, hwy(고속도로 연비)가 높은 순으로 출력하세요.
my_mpg <- ggplot2::mpg
View(my_mpg)
names(my_mpg)
my_mpg %>%
filter(manufacturer == "hyundai") %>% # 현대 차량만.
arrange(-hwy) %>% # 내림차순 정렬. (큰수부터.)
View()
# 2) hyundai 차량 중, hwy가 높은 순위(1~3위)에 해당하는 자동차 정보를 출력하세요.
my_mpg %>%
filter(manufacturer == "hyundai") %>%
arrange(-hwy) %>%
head(3) %>%
View()