반응형
데이터프레임에 행을 추가할 때 왜 리스트를 사용해야 하는지 이야기해보려고 합니다.
먼저 데이터프레임을 하나 정의하겠습니다.
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
숫자로 유지되고 있습니다.
반응형
'R 주제 > R 기초 및 통계 강의' 카테고리의 다른 글
[R강의] 140. 데이터 프레임을 쉽게 조작하는 transform 함수 (0) | 2023.02.27 |
---|---|
[R강의] 139. 데이터프레임 열이름, 행이름 출력하고 수정하기 (0) | 2023.02.03 |
[R강의] 137. 데이터프레임 결합의 끝판왕 (merge) (0) | 2023.01.31 |
[R강의] 136. rbind로 데이터프레임들 결합할 때, 구분하는 열 추가하기 (0) | 2023.01.31 |
[R강의] 135. 데이터프레임을 열로 결합하기 (cbind) (1) | 2023.01.25 |
댓글