티스토리 뷰

Data Science/R package

dplyr_filter()

jsBae 2022. 5. 3. 00:04
함수 기능
filter() 행 추출
select() 열(변수) 추출
arrange() 정렬
mutate() 변수 추가
summarise() 통계치 산출
group_by() 집단별로 나누기
left_join() 데이터 합치기(열)
bind_rows() 데이터 합치기(행)

1.데이터 준비

> exam <- read.csv("csv_exam.csv")
> exam
   id class math english science
1   1     1   50      98      50
2   2     1   60      97      60
3   3     1   45      86      78
4   4     1   30      98      58
5   5     2   25      80      65
6   6     2   50      89      98
7   7     2   80      90      45
8   8     2   90      78      25
9   9     3   20      98      15
10 10     3   50      98      45
11 11     3   65      65      65
12 12     3   45      85      32
13 13     4   46      98      65
14 14     4   48      87      12
15 15     4   75      56      78
16 16     4   58      98      65
17 17     5   65      68      98
18 18     5   80      78      90
19 19     5   89      68      87
20 20     5   78      83      58

파이프라인 : 단축키 [Ctrl+Shit+M]으로 %>% 기호 입력

filter() : 행 추출

> # exam에서 class가 1인 경우만 추출하여 출력
> exam %>% filter(class==1)
  id class math english science
1  1     1   50      98      50
2  2     1   60      97      60
3  3     1   45      86      78
4  4     1   30      98      58

> # 1반이 아닌 경우
> exam %>% filter(class != 1)
   id class math english science
1   5     2   25      80      65
2   6     2   50      89      98
3   7     2   80      90      45
4   8     2   90      78      25
5   9     3   20      98      15
6  10     3   50      98      45
7  11     3   65      65      65
8  12     3   45      85      32
9  13     4   46      98      65
10 14     4   48      87      12
11 15     4   75      56      78
12 16     4   58      98      65
13 17     5   65      68      98
14 18     5   80      78      90
15 19     5   89      68      87
16 20     5   78      83      58

> # 수학 점수가 50점을 초과한 경우
> exam %>% filter(math>50)
   id class math english science
1   2     1   60      97      60
2   7     2   80      90      45
3   8     2   90      78      25
4  11     3   65      65      65
5  15     4   75      56      78
6  16     4   58      98      65
7  17     5   65      68      98
8  18     5   80      78      90
9  19     5   89      68      87
10 20     5   78      83      58

# 여러조건을 충족하는 행 추출

> #여러 조건을 충족하는 행 추출하기
> exam %>% filter(class==1 & math>=50)
  id class math english science
1  1     1   50      98      50
2  2     1   60      97      60
> exam %>% filter(math >= 90 | english >= 90)
  id class math english science
1  1     1   50      98      50
2  2     1   60      97      60
3  4     1   30      98      58
4  7     2   80      90      45
5  8     2   90      78      25
6  9     3   20      98      15
7 10     3   50      98      45
8 13     4   46      98      65
9 16     4   58      98      65

> exam %>% filter(class == 1 | class == 3 | class == 5)  
   id class math english science
1   1     1   50      98      50
2   2     1   60      97      60
3   3     1   45      86      78
4   4     1   30      98      58
5   9     3   20      98      15
6  10     3   50      98      45
7  11     3   65      65      65
8  12     3   45      85      32
9  17     5   65      68      98
10 18     5   80      78      90
11 19     5   89      68      87
12 20     5   78      83      58

포함연산자 %in% 기호 이용하기

> exam %>% filter(class %in% c(1,3,5))
   id class math english science
1   1     1   50      98      50
2   2     1   60      97      60
3   3     1   45      86      78
4   4     1   30      98      58
5   9     3   20      98      15
6  10     3   50      98      45
7  11     3   65      65      65
8  12     3   45      85      32
9  17     5   65      68      98
10 18     5   80      78      90
11 19     5   89      68      87
12 20     5   78      83      58

추출한 행으로 데이터 만들기

> class1 <- exam %>% filter(class == 1)  # class가 1인 행 추출, class1에 할당
> class2 <- exam %>% filter(class == 2)  # class가 2인 행 추출, class2에 할당
> mean(class1$math)                      
[1] 46.25
> mean(class2$math)                      
[1] 61.25

 

728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
반응형