프로그래밍 언어/R

12. R에서의 데이터 프레임 생성 및 조작

ourkofe's story 2024. 8. 31. 12:30

데이터 프레임은 R에서 가장 많이 사용되는 데이터 구조 중 하나로, 행과 열로 구성된 2차원 데이터 구조입니다.

각각의 열은 벡터로 구성되며, 서로 다른 데이터 유형을 가질 수 있습니다.

데이터 프레임은 주로 통계 분석이나 데이터 과학 작업에서 사용됩니다.


데이터 프레임 생성 (data.frame() 함수 사용)

data.frame() 함수는 R에서 데이터 프레임을 생성할 때 사용되는 가장 기본적인 함수입니다.

여러 벡터를 모아 데이터 프레임으로 변환할 수 있습니다.


기본적인 데이터 프레임 생성

# 벡터로 데이터 프레임 생성
name <- c("John", "Jane", "Doe")
age <- c(25, 30, 22)
gender <- c("M", "F", "M")

# 데이터 프레임 생성
df <- data.frame(name, age, gender)
print(df)

위의 코드에서 name, age, gender라는 세 개의 벡터를 결합하여 데이터 프레임을 생성했습니다.

각 벡터는 데이터 프레임의 열이 되며, 행은 벡터의 요소에 해당합니다.

 

위에서 생성한 데이터프레임 df는 다음과 같이 생겼습니다.

# 데이터 프레임의 구조
  name age gender
1 John  25     M
2 Jane  30     F
3  Doe  22     M

열과 행의 추가, 삭제, 수정

데이터 프레임을 조작하는 가장 기본적인 작업은 열과 행을 추가하거나 삭제하고, 데이터를 수정하는 것입니다.


데이터 프레임 열 접근

  • $ 연산자 : 특정 열에 접근합니다.
df$name  # "John", "Jane", "Doe"
  • 대괄호 연산자 : [row, column] 형식으로 접근합니다.
df[1, ]  # 첫 번째 행
df[, 2]  # 두 번째 열
df[1, 3]  # 1행 3열의 값

열 추가

 

새로운 열을 데이터 프레임에 추가할 수 있습니다.

# 새로운 열 추가
df$height <- c(175, 160, 180)  # height 열 추가
df["weight"] <- c(70, 55, 80)  # 다른 방식으로 weight 열 추가
print(df)

행 추가

 

rbind() 함수를 사용하여 새로운 행을 추가할 수 있습니다.

# 새로운 행 추가
new_row <- data.frame(name = "Alice", age = 28, gender = "F", height = 165, weight = 60)
df <- rbind(df, new_row)
print(df)

열과 행 삭제

 

열과 행을 삭제할 때는 NULL 값을 할당하거나 subset() 함수를 사용할 수 있습니다.

# 열 삭제
df$height <- NULL  # height 열 삭제

# 행 삭제
df <- df[-4, ]  # 4번째 행 삭제
print(df)

데이터 수정

 

기존 열 또는 행의 데이터를 수정할 수 있습니다.

df$age[2] <- 31  # 2번째 행의 age 열 수정
df$name <- c("Johnathan", "Janet", "Doe")  # name 열 전체 수정
print(df)

특정 열 또는 행 선택, 필터링 (subset() 함수 사용)

데이터 프레임에서 특정 조건을 만족하는 행이나 열을 선택하거나 필터링할 때 subset() 함수를 사용할 수 있습니다.


특정 열 선택

 

subset() 함수를 사용하여 특정 열을 선택할 수 있습니다.

# 특정 열만 선택
df_name_age <- subset(df, select = c(name, age))
print(df_name_age)

조건에 따른 행 선택

 

특정 조건을 만족하는 행만 선택할 수 있습니다.

# 나이가 25 이상인 행만 선택
df_over_25 <- subset(df, age >= 25)
print(df_over_25)

# 혹은 이 방법도 가능하다.
df_over_25 <- df[df$age >= 25, ]
print(df_over_25)

데이터 프레임의 행과 열 이름 설정

  • 행 이름 설정:
rownames(df) <- c("Row1", "Row2", "Row3")
  • 열 이름 설정:
colnames(df) <- c("Name", "Age", "Gender", "Height", "Weight")

데이터 프레임 조작


행 추가

 

rbind() 함수를 사용하여 데이터 프레임에 행을 추가할 수 있습니다.

new_row <- data.frame(Name = "Alice", Age = 28, Gender = "F", Height = 165, Weight = 60)
df <- rbind(df, new_row)
print(df)

열 추가

 

cbind() 함수를 사용하여 데이터 프레임에 열을 추가할 수 있습니다.

new_col <- c("A", "B", "C", "D")
df <- cbind(df, Grade = new_col)
print(df)

데이터 프레임 정렬

 

order() 함수를 사용하여 특정 열을 기준으로 데이터 프레임을 정렬할 수 있습니다.

df_sorted <- df[order(df$Age), ]
print(df_sorted)

데이터 프레임에서 NA 값 처리

 

NA 값(결측치)을 처리하는 다양한 방법이 있습니다.

  • NA 값 제거:
df_no_na <- na.omit(df)  # NA 값이 있는 행 제거
  • NA 값을 다른 값으로 대체:
df$Weight[is.na(df$Weight)] <- mean(df$Weight, na.rm = TRUE)  # NA 값을 평균으로 대체

str() 함수로 데이터 프레임 구조 확인

str() 함수는 데이터 프레임의 구조를 확인할 때 유용합니다. 데이터 프레임의 각 열의 데이터 유형, 길이, 샘플 데이터를 확인할 수 있습니다.

str(df)

str() 함수는 데이터 프레임의 각 열에 대한 요약 정보를 제공하여, 데이터 유형(예: numeric, character, factor 등)과 각 열의 첫 몇 개의 데이터를 보여줍니다. 이 함수는 데이터 구조를 파악하고 문제를 진단하는 데 매우 유용합니다.


데이터프레임의 기본 분석


그룹별 요약 통계

 

aggregate() 함수를 사용하여 그룹별 요약 통계를 계산할 수 있습니다.

aggregate(Weight ~ Gender, data = df, mean)  # 성별로 Weight 평균 계산

apply 계열 함수 사용

  • apply(): 행 또는 열에 함수를 적용합니다.
apply(df[, c("Height", "Weight")], 2, mean)  # Height와 Weight 열의 평균 계산
  • lapply(), sapply(): 리스트 또는 데이터 프레임의 각 요소에 함수를 적용합니다.

데이터 프레임은 R에서 데이터 분석을 수행할 때 핵심적인 역할을 하는 데이터 구조입니다.

이 글에서 소개한 다양한 데이터 프레임 조작 방법을 익히면, 데이터 처리와 분석을 더욱 효율적으로 수행할 수 있습니다.

이를 통해 복잡한 데이터도 쉽게 관리하고 분석할 수 있게 되며, 데이터 과학 작업에서 한층 더 높은 생산성을 달성할 수 있을 것입니다.

감사합니다

728x90