본문 바로가기
## 오래된 게시글 (미관리) ##/R

31. 데이터 구조와 데이터 프레임 II

by #Glacier 2018. 11. 22.
반응형

안녕하세요.

포스팅합니다! 오늘도 데이터 구조와 데이터 프레임에 대해 알아볼텐데요~

오늘은 구조를 이해하고, 열과 행 데이터 추출/제거/변경, 여러 프레임 분할/결합/재생산, 구조 변경을 목적으로 알아보고자 합니다.


데이터 프레임을 잘 다룰줄 알아야 하는 이유는, 우리가 데이터를 분석하기 전에, 

여러 데이터들을 분석하기 위한 최적의 구조로 만들어야 하기 때문입니다.

따라서 데이터 분석보다 선행되어야 하는 것이죠..


#처음으로, 데이터프레임을 생성해봅니다.


data.frame(1,2,3)

#  X1 X2 X3
#1  1  2  3


#이렇게 생성됩니다.


#레코드 생성


new1<-data.frame(a=1, b=2,c=3, d="a")
new1
#  a b c d
#1 1 2 3 a
#이렇게 열이름과 동시에 값을 부여할 수 있습니다.


new2<-data.frame(d=4, e=5, f=6, g="b")

#두번째 데이터프레임을 만들었습니다.
#그리고, 행결합과 열결합을 해보겠습니다.


#행결합
rbind(new1, new2)

#Error in match.names , names do not match previous names
#이렇게 뜨는데요, 서로 열이름이 다르기 때문에 행결합을 할 수 없는 것입니다.
#그럼 열결합은 가능할까요? :)


cbind(new1, new2)

  a b c d d e f g
1 1 2 3 a 4 5 6 b


#이렇게 열결합이 가능합니다. 왜냐면, 열이름이 달라도 열을 추가만 하면 방식이니까요 ^^
#따라서, 행결합은 열이름이 같아야 행이 추가되기 때문에 가능하며, 열결합은 열이름이 달라도 됩니다.

#이제, 조회해보기 위해서 열결합한 것을 하나의 변수에 대입해보겠습니다.

new3<-cbind(new1,new2)


#이렇게 new3이라는 곳에 넣어놨으니 이제, 조회를 해볼까요?

new3[1]

  a
1 1

new3[1:3]

  a b c
1 1 2 3

new3$c
[1] 3

#열이름을 조회해보도록 하겠습니다.

colnames(new3)

[1] "a" "b" "c" "d" "d" "e" "f" "g"


#이제 열이름을 바꿔보도록 해보겠습니다.
colnames(new3)<-c("V1","V2","V3","V4","V5","V6","V7","V8")
new3

  V1 V2 V3 V4 V5 V6 V7 V8
1  1  2  3  a  4  5  6  b

#요렇게 바뀌었습니다. ^.^


#더 많은 데이터들을 집어넣어볼까요?
#a,b,c변수에 똑같은 길이의 데이터를 넣고 행결합 한 후, 다시 new3와 행결합하겠습니다.


a<-c(1,2,3,4,5,6,7,8)
b<-c(3,5,6,19,20,11,3,6)
c<-c(6,1,3,4,33,21,5,3)
d<-rbind(a,b,c)
new4<-rbind(d,new3)


  V1 V2 V3 V4 V5 V6 V7 V8
a  1  2  3  4  5  6  7  8
b  3  5  6 19 20 11  3  6
c  6  1  3  4 33 21  5  3
1  1  2  3  a  4  5  6  b


#열을 정해서 선택해보겠습니다.
subset(new4, select="V3")

  V3
a  3
b  6
c  3
1  3

#이렇게 V3 열이 전체가 보이게 되죠. 여러 열을 골라 선택도 가능합니다.


subset(new4, select=c("V3", "V5", "V7"))

  V3 V5 V7
a  3  5  7
b  6 20  3
c  3 33  5
1  3  4  6


#조금 더 어렵게 가볼까요. V3,V5,V7 열을 골르면서도, V3의 원소들 중 5보다 큰것만 출력해보겠습니다.


subset(new4, select=c("V3","V5","V7"),subset=V3>5)

  V3 V5 V7
b  6 20  3

# 잘 출력되었네요. 
# 이번엔 유용하게 쓸 수 있는 attach()와 detach()를 알아보겠습니다.
# attach함수와 detach함수는 어떤 것이냐면, 어떤 데이터프레임을 고정적으로 쓰겠다는 표현입니다.
# 예를 들면, 사진파일을 여러 곳에 저장해두었는데, 어떤 것을 찾아보려면 매번 저장된 디렉토리로 찾아가야 합니다.
# 하지만, attach를 쓰면, 내가 찾고자 하는 사진 파일을 찾아서 띄운 상태라고 보시면 됩니다.
# 즉, 내가 어떤 열변수를 조회하고자 할 때도, new4$V3처럼 "new4안의 V3열이야" 라고 말 안해주어도,
# V3만 쳐도 값이 출력되는 편리한 기능이죠. 이제 해보겠습니다.


attach(new4)
V3

[1] 3 6 3 3


# 요렇게 열에있는 값들이 행처럼 표현되서 나옵니다.
# 옆에 [1] 요런 표현은 벡터라는 표현입니다.
# 내가 이제 이 데이터프레임을 다 썼으니 끄겠다 라는 표현이 바로 detach()입니다. 
# 열어서 사용 다했으면 꺼야죠~ 
detach(new4)


# 사실 이런 기본적인 것들은 이전 포스팅에도 다뤘는데요. 다시 복기하는 마음으로 보시면 될 것 같아요~^^

반응형