티스토리 뷰
함수 | 기능 |
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
반응형