본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 138. 데이터프레임 행 추가할 때 리스트를 사용해야하는 이유

by 만다린망고 2023. 1. 31.
반응형

데이터프레임에 행을 추가할 때 왜 리스트를 사용해야 하는지 이야기해보려고 합니다. 

먼저 데이터프레임을 하나 정의하겠습니다. 

name=c('KYS','OJH','PSK')
gender=c('M','F','M')
height=c(182,165,177)

df=data.frame(name,gender,height,stringsAsFactors=FALSE)

> df
  name gender height
1  KYS      M    182
2  OJH      F    165
3  PSK      M    177


1열은 이름, 2열은 성별, 3열은 키입니다. 사람 한명의 정보를 더 추가하고 싶은 상황입니다. 

 

가장 쉽게 떠오르는 방법은 인덱싱을 통해 추가하는 것입니다. 아래와 같이 추가할 수 있습니다. 

 

> df[4,]=c('CYR','F',163)
> df
  name gender height
1  KYS      M    182
2  OJH      F    165
3  PSK      M    177
4  CYR      F    163

 

얼핏 잘 추가된 것 같아 보이지만 아닙니다. 데이터프레임에 str 함수를 적용해봅시다. 

 

> str(df)
'data.frame':	4 obs. of  3 variables:
 $ name  : chr  "KYS" "OJH" "PSK" "CYR"
 $ gender: chr  "M" "F" "M" "F"
 $ height: chr  "182" "165" "177" "163"

 

키가 문자열로 바뀌었습니다. c('CYR','F',163)을 입력할 때 벡터 특성 상 전부 문자열로 인식되었기 때문입니다. 이런 경우 rbind 함수와 리스트를 이용하면 해결됩니다. 

 

데이터프레임을 다시 정의합시다. 

 

name=c('KYS','OJH','PSK')
gender=c('M','F','M')
height=c(182,165,177)

df=data.frame(name,gender,height,stringsAsFactors=FALSE)

 

rbind 함수와 리스트를 이용하여 아래와 같이 행을 추가해봅시다. 

 

> df=rbind(df,list('CYR','F',163))
> df
  name gender height
1  KYS      M    182
2  OJH      F    165
3  PSK      M    177
4  CYR      F    163

 

키 데이터가 숫자로 유지되고 있는지 확인해봅시다. 

 

> str(df)
'data.frame':	4 obs. of  3 variables:
 $ name  : chr  "KYS" "OJH" "PSK" "CYR"
 $ gender: chr  "M" "F" "M" "F"
 $ height: num  182 165 177 163

 

숫자로 유지되고 있습니다. 

 

 

 

반응형

댓글