어제 글을 이어서 포스팅 해보도록 하겠습니다!
어제는 R vector, matrix를 배워 보았는데요.
오늘은 data.frame, list, array, factor에 대해서 이야기 해보도록 하겠습니다.
1. data frame
먼저 간단하게 data.frame을 만드는 방법을 소개하도록 하겠습니다.
matrix는 data를 순서대로 넣는 반면, data frame은 vector들을 넣어서 자료를 만듭니다.
개수가 다른 벡터를 넣을 경우 에러가 뜹니다.
data.frame의 기본 옵션들을 설명하자면,
row.names = rowname 설정
stringAsFactors = 글자들은 Factor로 지정할까 말까? (True & False) Factor는 나중에 다시 설명하도록하겠습니다.
나머지는 저도 잘 안써봐서 모르겠네요. (아시는분 댓글좀..)
data frame의 특징은 matrix와 대부분 동일합니다.
좌표처럼 자료를 확인이 가능하고, 숫자들만 있는 데이터의 경우 N×M이 같을 경우 사칙연산이 가능합니다.
그러나 matrix와 다른 점이 하나 있다면, 자료를 넣은 vector들의 type이 유지가 됩니다.
type이 유지 되는 것을 확인할 수가 있는데, 위에서 특이한 점은 문자여야할 vector가 integer로 인식이 되는 건데, 아래 class를 보면 같은 위치가 factor라고 지정이 되어있습니다. (즉 factcor의 특징상 integer로 나오게 된거죠. 나중에 설명할께요.. 미리 factor부터 할걸 그랬나..)
이것을 바로잡기 위해서는 옵션에서 stringAsFactors를 변경하는 것입니다.(stringAsFactors = T가 default입니다.)
잘 나왔죠?
이렇게 data frame을 알아보았고, 데이터 분석시에는 data frame이 사용하기 편합니다. 왜냐하면, 자료형이 유지가 되기 때문이죠.
분석을 하시다보면, matrix 보다는 data frame이 좋다는 것을 느끼게 될 겁니다. (matrix의 경우 툭하면 character로 변함..)
2. factor
두번째는 list이지만 급하게 바꿔서 factor를 설명하겠습니다.
factor는 범주형 변수라고 알려져있습니다.
범주형 변수?! 뭐지?
범주형 변수란 쉽게 이야기해서 특정 집단을 대표하는 값들이라고 저는 이해를 했습니다. 어렵게 설명하면 논리적순서를 가지거나, 가지지 않을수 있는 것이라고 이야기 할수도 있습니다.
제가 왜 특정 집단을 대표하는 값들이라고 정의를 했냐면,
다음과 같이 factor를 만들게되면, levels이라는 정보를 추가적으로 얻을 수가 있습니다.
levels의 값은 vector에서 중복되지 않는 대표값이라고 생각하시면 됩니다.
위 사진의 데이터에다가 추가로 데이터를 넣으면 어떻게 될까요?
character를 넣으니 전체가 character가 되고, numeric(숫자)을 넣으니 숫자가 되었습니다.
그런데 원래 자료에는 숫자가 없었는데, 어찌 숫자로 변했을까요?
앞서 만든 factor에서 levels이라는 대푯값이 있는데, 이것의 순서가 실제 값으로 바뀌어서 원래자료에 들어 간 것입니다.
factor의 경우 조금 짜증 날 수가 있는 애들입니다. (내가 넣은 숫자가 factor에서 numeric으로 변환되는 바람에 실제값과 다르게 나타나는 경우가 있기 때문이죠.)
이것을 해결하기 위해서
다음과 같은 방법을 쓰면 됩니다.
as.character는 vector를 character로 인식한다라는 뜻이고, as.numeric은 vector를 numeric으로 인식한다. 라는 뜻입니다.
바로 as.numeric을 쓰면, 아까 보여드렸던 levels의 순서가 각 값에 적용되어 나오게 됩니다.
factor의 경우 데이터를 읽을때 주로 생성이 되는데, 좋은점은! 데이터들을 group을 정할 때, 특징이 되는 vector를 factor로 바꾸면 쉽게 구별가능합니다. 나중에 anova, logistic, machine learning 할때, 요긴하게 쓰입니다. (나중에 포스팅하도록 하겠습니다.)
오늘도 여기까지만 하도록 하겠습니다.
블로그 만드는데 생각보다 시간이 많이 걸리네요.. 어떻게 설명해야하나 생각도 해야하고, 스샷도 찍어야하고..
그러나 방문자수는 거의 없고,, ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ 이것도 혼잣말일수도......
그래도 나중에 제가 까먹는거 적어놓는다 생각하고, 올리도록하겠습니다.
다음 포스팅은 list, array를 포스팅 하도록 할께요.
감사합니다!
'기본적인프로그래밍 > R' 카테고리의 다른 글
[R] 쉽게 배우는 R programming 기초 (5) (그래프, plot, 기타 parameter) (0) | 2020.06.30 |
---|---|
[R] 쉽게 배우는 R programming 기초 (4) (if문, for문, while문) (0) | 2020.06.25 |
[R] 쉽게 배우는 R programming 기초 (3) (list, array) (0) | 2020.06.24 |
[R] 쉽게 배우는 R programming 기초 (1) (vector, matric) (0) | 2020.06.22 |
[R] 쉽게 배우는 R programming 기초 (0) | 2020.06.17 |
댓글