🟦 R의 자료구조
R에서는 여러 자료구조가 존재한다. 기본적으로 아래 4개와 같은 자료구조가 사용된다.
- Vectors : 한 가지의 데이터 타입으로 이루어진 1열의 데이터
- Matrix : 한 가지의 데이터 타입으로 이루어진 행과 열로 구성된 데이터의 모음
- Arrays : 한 가지의 데이터 타입으로 이루어진 여러 레이어의 Matrix로 구성된 데이터
- Dataframes : 한 가지의 데이터 타입이 아닌 숫자, 글자, factor등 의 여러 데이터 타입으로 이루어진 행과 열 데이터
- Lists : 위의 여러 데이터 타입의 모음
🟦 티블(Tibble)이란?
Tibble은 새로운 타입의 data frame이다.
Tibble 특징
1. 데이터 타입을 아래와 같이 Colunm 이름 밑에 <~>로 표시한다.
<chr> 문자형(character)
<int> 정수(integer)
<dbl> 더블(double)
<date> 날짜(date)
<time> 시간(time)
<dttm> 날짜와 시간(date-time)
<lgl> 논리값. 조건에 맞으면 TURE, 그렇지 않으면 FALSE 반환
+lbl 변수의 값에 부여된 라벨 값이 추가되어 있음을 표시
2. 많은 데이터를 다룰때, 효율성을 위해 맨 위의 10줄만 출력, 짤린 열도 아래 따로 표시해 준다.
이는 따로 옵션값을 조절해서 출력 양을 수정할 수 있음 .
`options(tibble.print_max = 20, tibble.print_min = 6)`
3. 티블은 입력의 유형을 변경할 수 없(문자열을 팩터형으로 변환하지 않는다) 으며, 또한 변수의 이름을 바꾸거나, 행이름을 생성하지 않음.
🟦 Tibble 사용해보기
# Installing
install.packages("tibble")
# Loading
library("tibble")
Tibble 구조 만들어보기
# data.frame as tibble
as_tibble(iris)
# Ex02
tibble(
x = 1:5,
y = 1,
z = x ^ 2 + y
)
# Ex02
tribble(
~x, ~y, ~z,
#--|--|----
"a", 2, 3.6,
"b", 1, 8.5
)
인덱싱하기
df <- tibble(
x = runif(5),
y = rnorm(5)
)
df
df$x
df[["x"]]
df[[1]]
df %>% .$x
df %>% .[["x"]]
변수 복사하기
tibble(a = 1, b = 1:3)
#> # A tibble: 3 × 2
#> a b
#> <dbl> <int>
#> 1 1 1
#> 2 1 2
#> 3 1 3
tibble(a = 1:3, b = 1)
#> # A tibble: 3 × 2
#> a b
#> <int> <dbl>
#> 1 1 1
#> 2 2 1
#> 3 3 1
🟦 data.frame과 비교하기
1. 변수 이름
names(data.frame(`crazy name` = 1))
# "crazy.name"
names(tibble(`crazy name` = 1))
# "crazy name"
이름의 띄어쓰기를 적용할 수 있다
아래와 같은 이름도 적용 가능하다
tb <- tibble(
`:)` = "smile",
` ` = "space",
`2000` = "number"
)
2. 계산 시간
l <- replicate(26, sample(100), simplify = FALSE)
names(l) <- letters
microbenchmark::microbenchmark(
as_tibble(l),
as.data.frame(l)
)
## Unit: microseconds
## expr min lq mean median uq max
## as_tibble(l) 309.250 327.099 376.2002 344.7265 386.004 1689.046
## as.data.frame(l) 1390.507 1464.361 1614.3087 1543.3465 1690.608 3104.097
## neval cld
## 100 a
## 100 b
tibble에서의 평균 계산 시간이 적다
3. Subsetting
df1 <- data.frame(x = 1:3, y = 3:1)
class(df1[, 1:2])
#> [1] "data.frame"
class(df1[, 1])
#> [1] "integer"
df2 <- tibble(x = 1:3, y = 3:1)
class(df2[, 1:2])
#> [1] "tbl_df" "tbl" "data.frame"
class(df2[, 1])
#> [1] "tbl_df" "tbl" "data.frame"
df <- data.frame(abc = 1)
df$a
#> [1] 1
df2 <- tibble(abc = 1)
df2$a
#> Warning: Unknown or uninitialised column: `a`.
#> NULL
🟦 출처
- https://medium.com/@tiwarigaurav2512/r-data-types-847fffb01d5b
- http://statseducation.com/Introduction-to-R/modules/getting%20data/tibbles/
- http://www.sthda.com/english/wiki/tibble-data-format-in-r-best-and-modern-way-to-work-with-your-data
- https://rstatistics.tistory.com/49
- https://bookdown.org/sulgi/r4ds/tibbles.html#tibble-vs.-data.frame