[R] 데이터 구조
데이터 정제에 앞서
함수 사용이나 데이터 취급을 위해서는
데이터의 전체적인 구조나 정보에 대해 알고있어야 한다.
데이터 정보 조회
자료 구조형
#자료구조형 조회
a <- c("a","b","c")
class()
class(iris)
> class(iris)
[1] "data.frame"
class(iris$Species)
> class(iris$Species)
[1] "factor"
class(iris$Sepal.Length)
> class(iris$Sepal.Length)
[1] "numeric"
class(a)
> class(a)
[1] "character"
- factor 는 성별 이나 등급 등과 같이 데이터가 속해있는 그룹/범주 등을 나타내는 값
levels(iris$Species)
> levels(iris$Species)
[1] "setosa" "versicolor" "virginica"
요약
- 해당 데이터의 간략한 정보 조회
# Data Frame 일 경우, Column별로 요약
# numeric 데이터 : 최소/최대/1사분위/중앙값/평균/3사분위 값
# factor 데이터 : 빈도수(Freq)
# character 데이터 : 길이(Length), 클래스(Class), 모드(Mode)
data <- c("월","수","토","월", "수", "화", "수", "수", "목", "화")
summary(data)
> summary(data)
Length Class Mode
10 character character
summary(iris)
> summary(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50
Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
# 데이터 자료 형태 정보
dim() # (행 수 , 열 수)
dim(iris)
> dim(iris)
[1] 150 5
#열 수
ncol()
ncol(iris)
> ncol(iris)
[1] 5
#행 수
nrow()
nrow(iris)
> nrow(iris)
[1] 150
범주화
- 일정한 기준으로 데이터를 Grouping 을 하면
Factor로 구분할 수 있다.
data <- c("월","수","토","월", "수", "화", "수", "수", "목", "화")
summary(data)
> summary(data)
Length Class Mode
10 character character
# factor() 함수를 통해 Grouping
fdata <- factor(data)
> fdata
[1] 월 수 토 월 수 화 수 수 목 화
Levels: 목 수 월 토 화
class(fdata)
summary(fdata)
levels(fdata)
# 구조가 변환된 것을 알 수 있다.
> class(day1)
[1] "factor"
> summary(day1)
목 수 월 토 화
1 4 2 1 2
> levels(day1)
[1] "목" "수" "월" "토" "화"
- 상황에 따라 내 마음대로 변환시킬 수 있다.
levels
를 직접 지정하고 이름(labels
) 또한 지정 할 수 있다.
week.name <- c("일", "월", "화","수", "목", "금", "토")
fdata2 <- factor(data,
levels = week.name)
# levels에 해당하는 값이 없더라도 미리 범주를 만들어 놓을 수 있다.
fdata2
> fdata2
[1] 월 수 토 월 수 화 수 수 목 화
Levels: 일 월 화 수 목 금 토
summary(fdata2)
levels(fdata2)
#출력 순서도 위 week.name 벡터의 순서대로 지정된 것을 알 수 있다.
#"일"과 "금"이라는 levels에 해당하는 값은 없기때문에 빈도수는 0이다.
> summary(fdata2)
일 월 화 수 목 금 토
0 2 2 4 1 0 1
> levels(fdata2)
[1] "일" "월" "화" "수" "목" "금" "토"
# 반대로 값은 있지만 해당하는 levels가 없는 경우
b.type <- factor(c("A", "O", "AB", "B", "O", "A", "O"),
levels=c("A", "B", "O"))
# levels에 없는 값은 <NA>로 표시되는 것을 볼 수 있다.
b.type
> b.type
[1] A O <NA> B O A O
Levels: A B O
기존에 지정된 levels
의 Factor명을 바꾸는 방법은 labels
인수로 지정해주는 것이다.
#labels로 지정해주는 값의 갯수와 위치는 levels와 통일시켜야한다.
gender <- factor(c(1,2,1,1,1,2,1,2),
levels=c(1,2),
labels=c("남성", "여성"))
> gender
[1] 남성 여성 남성 남성 남성 여성 남성 여성
Levels: 남성 여성
> summary(gender)
남성 여성
5 3
> levels(gender)
[1] "남성" "여성"
Author And Source
이 문제에 관하여([R] 데이터 구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yummygyudon/R-데이터-조회저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)