Computer Science/R

[R] 데이터 프레임 (Data Frames) 다루기

2022. 7. 2. 18:10

Python이든 R이든 데이터 프레임 (Data Frames)은 데이터 분석 시 가장 잘 다뤄지는 형식 중 하나이다. 이번 포스팅에서는 R에서 데이터 프레임을 다루는 기본적인 코드들을 정리하였다.

 

기본 코드

library(dplyr)
library(tidyverse)

# Generate a data frame.
df <- data.frame(A = c(1,2,3,4), B = c(1,1,1,1))

# Add columns
df$C <- (df$A - df$B)
df[,'D'] <- (df[,'A'] + df[,'B'])
df$E <- c(2,2,2,2)

# Add a row
df[nrow(df) + 1,] = c(5,1,4,6,2)

# Indexing
rownames(df)
colnames(df)
df[,1:2] # same with df[,c('A','B')], df %>% select('A','B')

# Select
df[(df['A']==5)]
subset(df, A>2 & D<6) # simiral with df %>% filter(A>2 & D<6)
subset(df, A %in% c(1,2,3))
df[df['A']==5 & df['B']==1,'Selected']=TRUE
df = df %>% select(-'Selected')

# Filter
df %>% filter(column %in% 'value1')

# Pull
df %>% pull(column1) # return a list of values from 'column1'

# Ordering
df %>% arrange(-A) # same with dplyr::arrange(df, -A)

# Merge
rownames(df) = c(1,2,3,4,5)
df2 <- data.frame(A = c(1,2,3,4))
rownames(df2) = c(3,4,5,6)
merge(df, df2, by=0, all = TRUE, suffixes=c('.x','.y'))
df = merge(df, df2, by=0, all = TRUE, suffixes=c('.x','.y'))

# Fill NA
df[,'A.y'][is.na(df[,'A.y'])] <- 0
df['6',][is.na(df['6',])] <- df['1',][is.na(df['6',])]

# Save and load
write_csv(df, 'df.csv')
df <- read.csv("df.csv")

 

예제 모음

# Test_로 시작하는 모든 column값에 대하여
# Group 컬럼 값이 Case인 row에 대해서는 모두 500으로 바꿔주고, 아니면 기존 값으로 둠.
dplyr::mutate(across(starts_with("Test_"), ~ if_else(Group=="Case", 500, .)))

 

  • tidyverse는 code를 다른 방식으로 표현시켜 주는 페키지이다. 예를 들어 dplyr::arrange(df, -A)을 df %>% arrange(-A)처럼 쓸 수 있게 해준다. 어느 것이 더 편할지는 선택하면 되는데, 개인적으로는 tidyverse식 표현 방법이 마음에 들었다.
  • dplyr의 함수를 호출할 때 페키지를 임포트하고, 함수만 호출하는 것이 아니라, "dplyr::함수"로 호출하는 것이 안전하다. 예를 들어, library(dplyr) 후 arrange(df, -A)보다 dplyr::arrange(df, -A)로 쓰는 것이 더 낫다. 이는 dplyr 내 arrange, select 등의 함수가 다른 페키지에서 정의되어 있을 때 그 페키지를 임포트하면 꼬일 수 있기 때문이다 (나는 dplyr 페키지의 select를 쓰려고 했는데, 다른 페키지의 select 함수가 불러와지는 등).
  • R에서 dataframe을 다룰 때 dplyr 페키지를 활용하면 아주 유용하다. dplyr의 간단한 사용방법은 아래 URL에서 확인할 수 있다.

https://dplyr.tidyverse.org/articles/dplyr.html

 

Introduction to dplyr

Start here if this is your first time using dplyr. You'll learn the basic philosophy, the most important data manipulation verbs, and the pipe, `%>%`, which allows you to combine multiple verbs together to solve real problems.

dplyr.tidyverse.org

 

728x90
반응형