1. Introduce
- R4DS라는 책에서는 전통적인 data.frame(데이터프레임) 대신 '티블(tibble)'을 가지고 작업한다.
- tibble도 사실 데이터프레임이지만, 좀 더 편리하게 사용할 수 있도록 오래된 동작들을 수정한 것이다.
- 티블과 데이터프레임을 같은 의미로 사용하지만
-R의 내장 데이터프레임에 대해 이야기 할 때는 data.frame으로 호칭할 것이다.
librart(tidyverse)
- tidyverse 패키지를 통해 tibble 패키지를 실행시킬수있다.
2. tibble 생성하기
- R4DS에서 사용하는 대부분의 함수는 tidyverse의 통합 특성 중 하나인 티블을 생성한다.
- 대부분의 다른 R패키지는 일반적인 데이터프레임을 사용하므로,
- 데이터프레임을 티블로 강제 변형해야 할 경우가 있다.
- as_tibble()을 사용하면 해결할 수 있다.
as_tibble(iris)
# A tibble: 150 × 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ℹ 140 more rows
# ℹ Use `print(n = ...)` to see more rows
- tibble()을 사용하여 개별 벡터로부터 새로운 티블을 만들 수 있다.
tibble(
x= 1:5,
y = 1,
z = x^2+ y
)
# A tibble: 5 × 3
x y z
<int> <dbl> <dbl>
1 1 1 2
2 2 1 5
3 3 1 10
4 4 1 17
5 5 1 26
- data.frame()에 이미 익숙하다면 tibble()은 동작의 규모가 훨씬 작다는 것에 주의해야 한다.
- 즉 입력의 유형을 절대로 변경하지 않고, 변수의 이름을 바꾸거나 행 이름을 생성하지 않는다.
- 티블은 R변수명으로 유효하지 않은 이름도 열 이름으로 가질 수 있다.
- 해당 변수들을 참조하려면 역따옴표(backtickt`)으로 감싸야한다.
tb <- tibble(
`:)` = "스마일",
` ` = "스페이스" )
# A tibble: 1 × 2
`:)` ` `
<chr> <chr>
1 스마일 스페이스
- 티블을 만드는 또 다른 방법은 tribble()을 사용하는 것이다.
- tribble()은 코드로 데이터를 입력하기 위해 고안되었다.
- 열 헤더는 공식으로 정의되고(~시작) 입력은 쉼표로 구분된다.
- ex)
tribble(
~x,~y,~z,
"a",1,2,
"b",2,3
)
# A tibble: 2 × 3
x y z
<chr> <dbl> <dbl>
1 a 1 2
2 b 2 3
3. Tibble vs Dataframe
- 티블과 데이터프레임의 용법에 두 가지 주요 차이점이 있다. 화면 출력과 서브셋하기이다.
3.1 화면 출력
- 티블에는 처음 10개의 행과 화면에 들어가는 열 모두를 보여주는 정교한 화면 출력 방법이 있다.
- 이를 이용하면 대용량 데이터 작업을 훨씬 쉽게 할 수 있다.
tibble(
a = lubridate::now() + runif(1e3) * 86400,
b = lubridate::today() + runif(1e3) * 30,
c = 1:1e3,
d = runif(1e3),
e = sample(letters, 1e3, replace = TRUE)
)
# A tibble: 1,000 × 5
a b c d e
<dttm> <date> <int> <dbl> <chr>
1 2024-04-04 19:52:57 2024-04-26 1 0.296 r
2 2024-04-05 14:52:12 2024-04-24 2 0.371 r
3 2024-04-05 19:14:46 2024-04-11 3 0.961 m
4 2024-04-05 14:15:09 2024-04-17 4 0.813 l
5 2024-04-05 11:51:09 2024-05-01 5 0.0582 n
6 2024-04-04 21:15:16 2024-04-13 6 0.212 o
7 2024-04-04 23:07:16 2024-04-23 7 0.609 m
8 2024-04-05 12:07:12 2024-04-30 8 0.934 p
9 2024-04-04 22:37:23 2024-04-09 9 0.962 d
10 2024-04-05 16:15:36 2024-05-02 10 0.319 j
# ℹ 990 more rows
# ℹ Use `print(n = ...)` to see more rows
3.2 서브셋하기
- 변수 하나를 추출하려면 새로운 도구인 $ 및[[ 이 필요하다
- [[ : 이름이나 위치로 추출가능
- $ : 이름으로만 추출 가능 --> 타이핑을 조금 덜해도됨
df <- tibble(
x = runif(5),
y = rnorm(5)
)
1) 이름으로만 추출
df$x
[1] 0.1302393 0.8210115 0.9730745 0.7630760 0.7470293
df[["x"]]
[1] 0.1302393 0.8210115 0.9730745 0.7630760 0.7470293
2) 위치로 추출
df[[1]]
[1] 0.1302393 0.8210115 0.9730745 0.7630760 0.7470293
- 파이프에서 이것들을 사용하려면 특별한 플레이스홀더(placeholder)인 .을 사용해야한다.
ex)
df %>% .$x
[1] 0.1302393 0.8210115 0.9730745 0.7630760 0.7470293
'DS Study > R4DS(R언어)' 카테고리의 다른 글
[R4DS] [6] tidyr로 하는 타이디 데이터 (0) | 2024.04.06 |
---|---|
[R4DS] [5] readr로 하는 데이터 불러오기 (1) | 2024.04.05 |
[R4DS] [3-3] 공변동 (0) | 2024.04.03 |
[R4DS] [3-2] 결측값 (0) | 2024.04.03 |
[R4DS] [3-1] 탐색적 데이터 분석(EDA) (0) | 2024.04.01 |