Study/R

R의 데이터구조 변환방법

chanzae 2022. 2. 3. 19:14

ㅇ 벡터의 변환

변환 방법 설명
 벡터(vec) > 리스트  as.list(vec)  
 벡터 > 행렬  열 한 개짜리 행렬 : cbind(vec) 또는 as.matrix(vec)
 행 한 개짜리 행렬 : rbind(vec) 
 n x m 행렬 : matrix(vec,n,m)
 cbind()는 열 기준
 rbind()는 행 기준
 벡터 > 데이터 프레임  as.data.frame(vec)  열 한 개짜리 데이터 프레임 생성
b <- c('가','나','다','라','마') # 벡터 생성

as.list(b)  # 리스트
cbind(b)  # 1개 열인 행렬
rbind(b)  # 1개 행인 행렬
as.data.frame(b)  # 데이터 프레임

 

ㅇ 리스트의 변환 

변환 방법 설명
 리스트(lst) > 벡터  unlist(lst)  as.vector()보다는 unlist()쓰는 걸 추천
 리스트 > 행렬  열 한 개짜리 행렬 : as.matrix(lst)
 행 한 개짜리 행렬 : as.matrix(rbind(lst))
 n x m 행렬 : matrix(lst, n, m)
 
 리스트 > 데이터 프레임  as.data.frame(list)  
b <- c('가','나','다','라','마')
c <- c('비밀번호', 486,'테스트','데이터',20000)
lst <- as.list(c(b,c)) # 벡터를 결합해 리스트로 만듦

unlist(lst)  # 벡터로 변환
as.matrix(lst)  # 1개의 열인 행렬
as.matrix(rbind(lst))  # 1개의 행인 행렬
matrix(lst,5,2)  # 5x2 행렬
as.data.frame(lst)  # 데이터 프레임

> 리스트로 구성 시 데이터가 문자형 + 숫자형일 경우에 모두 문자형으로 바뀐다.

 

 

ㅇ 행렬의 변환

변환 방법 설명
 행렬(mat) > 벡터  as.vector(mat)  행렬의 모든 원소를 벡터로
 행렬 > 리스트  as.list(mat)  행렬의 모든 원소를 리스트로
 행렬 > 데이터 프레임  as.data.frame(mat)  
a <- c(1,2,3,4,5)
b <- c('가','나','다','라','마')
c <- c('비밀번호', 486,'테스트','데이터',20000)
mat <- matrix(c(a,b,c),byrow=F,ncol=3) # 벡터를 모아 행렬로 생성

as.vector(mat)  # 벡터
as.list(mat) # 리스트
as.data.frame(mat)  # 데이터 프레임

> 이때 행렬은 처음부터 벡터로 만들어져야 나중에 행렬>벡터, 행렬>리스트로 변환할 수 있음. 리스트로 만들어진 행렬이라면 행렬>벡터, 행렬>리스트로 변환할 수 없음.

리스트로 만들어진 행렬이 행렬>벡터, 행렬>리스트로 변환되지 않은 것을 확인할 수 있음.

 

 

ㅇ 데이터 프레임의 변환

변환 방법 설명
 데이터 프레임(dfrm) > 벡터  행 하나짜리 데이터 프레임 변환 : as.vector(as.matrix(dfrm))
 열 하나짜리 데이터 프레임 변환 : dfrm[ ,1] 또는 dfrm[[1]]
 
 데이터 프레임 > 리스트  as.list(dfrm)  dataframe은 이미 리스트이기 때문에 이 경우 의미 없음. 
 데이터 프레임 > 행렬  as.matrix(dfrm)  

 

 

+) 참고 블로그

https://codingcoding.tistory.com/675

반응형