R에서 "r"과 "tidyverse"를 이용하여 열 이름의 단위를 분리하는 방법
R에서 "r"과 "tidyverse"를 이용하여 열 이름의 단위를 분리하는 방법
separate 함수 사용
"tidyverse" 패키지의 separate
함수를 사용하여 열 이름을 두 개의 열로 분리할 수 있습니다.
library(tidyverse)
df <- data.frame(
x = c(1, 2, 3),
y = c(4, 5, 6),
z = c("m", "cm", "mm")
)
# 열 이름을 "_" 기준으로 분리
df_new <- separate(df, col = names(df)[3], sep = "_", into = c("unit", "value"))
print(df_new)
#> # A tibble: 3 x 3
#> x y unit value
#> <dbl> <dbl> <chr> <chr>
#> 1 1 4 m 1
#> 2 2 5 cm 2
#> 3 3 6 mm 3
위 코드에서:
separate
함수는df
데이터 프레임의z
열을unit
과value
라는 두 개의 열로 분리합니다.sep
인수는 열 이름을 분리하는 데 사용되는 구분자를 지정합니다. 이 경우 "_"입니다.into
인수는 분리된 열 이름을 지정합니다.
stringr 패키지 사용
"stringr" 패키지를 사용하여 열 이름을 분리할 수도 있습니다.
library(stringr)
df_new <- df %>%
rename(new_name = str_remove(names(df)[3], "_.*")) %>%
mutate(unit = str_extract_all(names(df)[3], "_(.*)")) %>%
select(-3) %>%
rename(value = new_name)
print(df_new)
#> # A tibble: 3 x 3
#> x y unit value
#> <dbl> <dbl> <chr> <chr>
#> 1 1 4 m 1
#> 2 2 5 cm 2
#> 3 3 6 mm 3
str_remove
함수는 열 이름에서 "_.*" 패턴을 제거하여 새로운 열 이름을 만듭니다.str_extract_all
함수는 열 이름에서 "_(.*)" 패턴을 추출하여 "unit" 열을 만듭니다.select
함수는 원래 열을 제거합니다.rename
함수는 마지막 열 이름을 "value"로 변경합니다.
결론
예제 코드
library(tidyverse)
df <- data.frame(
x = c(1, 2, 3),
y = c(4, 5, 6),
z = c("m", "cm", "mm")
)
# 1. `separate` 함수 사용
df_new <- separate(df, col = names(df)[3], sep = "_", into = c("unit", "value"))
print(df_new)
#> # A tibble: 3 x 3
#> x y unit value
#> <dbl> <dbl> <chr> <chr>
#> 1 1 4 m 1
#> 2 2 5 cm 2
#> 3 3 6 mm 3
# 2. `stringr` 패키지 사용
library(stringr)
df_new <- df %>%
rename(new_name = str_remove(names(df)[3], "_.*")) %>%
mutate(unit = str_extract_all(names(df)[3], "_(.*)")) %>%
select(-3) %>%
rename(value = new_name)
print(df_new)
#> # A tibble: 3 x 3
#> x y unit value
#> <dbl> <dbl> <chr> <chr>
#> 1 1 4 m 1
#> 2 2 5 cm 2
#> 3 3 6 mm 3
설명
대체 방법
base R 함수 사용
df_new <- cbind(
df[, 1:2],
unit = substr(names(df)[3], 2, nchar(names(df)[3]))
)
print(df_new)
#> # A tibble: 3 x 3
#> x y unit
#> <dbl> <dbl> <chr>
#> 1 1 4 m
#> 2 2 5 cm
#> 3 3 6 mm
substr
함수는 열 이름에서 2번째 문자부터 마지막 문자까지 추출하여 "unit" 열을 만듭니다.
gsub 함수 사용
gsub
함수를 사용하여 열 이름의 단위를 추출할 수도 있습니다.
df_new <- df %>%
rename(new_name = gsub("_.*", "", names(df)[3])) %>%
mutate(unit = str_extract_all(names(df)[3], "_(.*)")) %>%
select(-3) %>%
rename(value = new_name)
print(df_new)
#> # A tibble: 3 x 3
#> x y unit value
#> <dbl> <dbl> <chr> <chr>
#> 1 1 4 m 1
#> 2 2 5 cm 2
#> 3 3 6 mm 3
gsub
함수는 열 이름에서 "_.*" 패턴을 ""로 바꿉니다.
결론
r tidyverse