일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- t검정
- 최저시급 개정안
- 선형성
- 핵개발
- 동전 던지기
- 아인슈타인
- R 프로그래밍
- t-test
- 조던피더슨
- 인터스텔라
- 자기관리
- 멘탈관리
- 통계오류
- 비행기 추락
- 찬물샤워
- 최저 시급
- R 기초
- 수학적 사고
- R4DS
- 핵 개발
- 성악설
- 산입범위
- 큰수의 법칙
- 비율
- 비선형성
- 통계 오류
- 유닛테스트
- 티모시페리스
- 이기적 유전자
- 산입 범위
- Today
- Total
public bigdata
R4DS (R for DataScience) 3장 본문
R4DS (R for DataScience) 3장
public bigdata 2019. 12. 2. 22:263.1 dplyr
- filter
- arrange
- select
- mutate
- summarize
해당 함수들은 모두 group_by에 의해서 그룹마다 동작하도록 할 수 있다.
3.2.1 비교연산
> sqrt(2)^2 == 2
[1] FALSE
> 1/49*49 == 1
[1] FALSE
컴퓨터는 유한한 정밀도의 산술을 사용하므로 위와 같은 결과가 도출된다. == 대신 near 함수를 사용하면 아래와 같다
> dplyr::near(sqrt(2)^2, 2)
[1] TRUE
> dplyr::near(1/49*49, 1)
[1] TRUE
3.2.2 논리 연산자
드모르간 법칙을 적용한 R 논리 연산자
- !(x&y) --> !x|!y
- !(x|y) --> !x & !y
3.6.4 집계와 논리형 서브셋을 조합하는 것이 유용할 때가 있다.
note_cancelled %>%
group_by(year, month, day) %>%
summarise(
avg_delay = mean(arr_delay),
avg_delay2 = mean(arr_delay[arr_delay > 0]) # 이부분
)
3.6.4 유용한 요약 함수
산포 측정값
- sd() : 표준편차
- IQR() : 사분위 범위
- mad() : 이상값이 있을 때 더 유용할 수 있는 로버스트한 대체값
순위측정값
- min
- quantile
- max
자리 측정값
- first
- nth
- last
x[1], x[2], x[length(x)]와 유사하게 동작하지만 자리가 존재하지 않을 때 기본값을 설정할 수 있다.
아래처럼 복잡한 필터링도 가능하다
note_cancelld %>%
group_by(year, month, day) %>%
mutate(r = min_rank(desc(dep_time))) %>%
filter(r %in% range(r))
year, month, day 그룹별로 dep_time을 내림차순으로 min_rank를 매겨서 r이라는 변수를 만든 뒤에 year, month, day별로 r의 최소, 최대값을 구한 뒤에 해당 r이 최소, 최대 순위에 해당할 때 데이터를 가져오는 코드이다. group_by는 mutate, filter를 만나도 그룹이 벗겨지지 않는다. summarise 함수를 만날 때만 한 꺼풀씩 벗겨진다.
카운트
현재 그룹의 크기를 반환하는 n().을 사용하거나, 결측이 아닌 수를 카운트 하려면 sum(!is.na(x)), 유일한 값 개수를 카운트하려면 n_distinct(x)를 사용하라.
논리형 값의 카운트와 비율
수치형 함수와 사용할 경우 TRUE는 1 FALSE는 0으로 바뀌어 mean을 사용하면 조건을 만족하는 비율을 알 수 있다.
> iris %>%
+ group_by(Species) %>%
+ summarise(ratio_sepal.widht3 = mean(Sepal.Width>=3))
# A tibble: 3 x 2
Species ratio_sepal.widht3
<fct> <dbl>
1 setosa 0.96
2 versicolor 0.32
3 virginica 0.580
3.6.5 여러 변수로 그룹화
여러 변수로 그룹화하면 요약값은 그룹화의 한 수준씩 벗겨낸다. summarise가 한 수준씩 벗겨낸다고 알고 있자.
3.6.7 연습문제
1) mean, lead, lag, min_rank, row_number등의 함수들은 group_by와 함께 mutate또는 filter 내에서 사용될 때 각 그룹 내에서 작동한다.
+, -, <, ==, %%, %/%, log (산술 연산자, 논리 연산자, 모듈식 산술 연산자, 로그 함수)는 group_by의 영향을 받지 않는다.
2) 그룹화 mutate, filter에서 가장 자연스럽게 동작하는 함수는 윈도 함수들도 있다고 알려져 있다. 해당 함수들은 vignette("window-functions"))에서 알아볼 수 있다.
3.7.1 연습문제
6번
해당 문제에서 표준화를 하는 이유는 scale이 크거나, 분포가 종모양이 아닌 경우에 표준화를 통해서 어느 정도 분포를 종모양과 비슷하게 만들어 준 뒤에 어떤 값이 이상치인지 알아보기 위해 표준화를 하는 것으로 이해 하였다.
4장
4.1코드실행하기
- 컨+shift+s를 통해 코드 전체 실행
- 스크립트 공유하는 경우 install.packages(), setwd()를 포함하여 다른 살마의 컴퓨터 설정을 변경하게 하는 것은 옳지 않다.
'R programming > R4DS (R for DataScience) ' 카테고리의 다른 글
R4DS (R FOR DATASCIENCE) 6장 (0) | 2019.12.23 |
---|---|
R4DS (R for DataScience) 5장(4장 별 내용 없어 3장에 간단히 기록) (0) | 2019.12.10 |
R4DS (R for DataScience) 2장 (0) | 2019.11.27 |
R4DS (R for DataScience) 1장 (0) | 2019.11.03 |
R4DS 서문 (0) | 2019.02.25 |