Programming/R

[R기초] Data object : dataFrame 자료형

aram 2023. 7. 24. 17:37

 

dataFrame 데이터 프레임

  • 행과 열로 이루어진 자료형
  • 요소의 자료형이 달라도 됨
  • matrix는 요소의 자료형이 동일해야 함

 

#생성 data.frame()

1. 벡터를 이용한 생성

no <- c(1,2,3,4)
name <- c('Apple','Peach','Banana','Grape')
price = c(500,1000,500,2000)
qty <- c(5,2,6,1)

sales <- data.frame(NO=no, NAME=name, Price=price, QTY=qty)
sales
  #   NO   NAME Price QTY
  # 1  1  Apple   500   5
  # 2  2  Peach  1000   2
  # 3  3 Banana   500   6
  # 4  4  Grape  2000   1


2. matrix를 활용한 생성

m1 <- matrix(x, nrow=4, byrow=T)
m1
  #     [,1] [,2]     [,3]   [,4]
  # [1,] "1"  "Apple"  "500"  "5" 
  # [2,] "2"  "Peach"  "1000" "2" 
  # [3,] "3"  "Banana" "500"  "6" 
  # [4,] "4"  "Grape"  "2000" "1"
  
sales2 = data.frame(m1)
sales2
  #   X1     X2   X3 X4
  # 1  1  Apple  500  5
  # 2  2  Peach 1000  2
  # 3  3 Banana  500  6
  # 4  4  Grape 2000  1

 

#컬럼명 조회&변경 names()  |  colnames()   /  행 row.names()  |   rownames()

#조회
names(sales2) #"X1" "X2" "X3" "X4" : 열
row.names(sales2) #"1" "2" "3" "4" : 행

#수정
names(sales2) = c('NO', "NAME", 'Price', 'QTY') #"NO" "NAME" "Price" "QTY" : 열
row.names(sales2) <- c('A','B','C','D') #"A" "B" "C" "D" : 행

 

#조건 subset()

: 조건으로 검색

subset(sales2, Price==2000)
	#  NO  NAME Price QTY
	#D  4 Grape  2000   1

: 조건식으로 출력

L = list(ID=c(1,2,3,4)
         , name=c('Kim','Lee','Park','E')
         , score=c(80,95,75, 20))
L <- data.frame(L)
L$score[L$name=="Park"] #75

 

#df concat 행 rbind() /  열 cbind()

df1                   df2
#   no   name price   #   no     name price
# 1  1  apple   100   # 1 10    train  1000
# 2  2 banana   200   # 2 20      car  2000
# 3  3  peach   300   # 3 30 airplain  3000

df3 <- rbind(df1, df2)   #아래로 합치기
  #   no     name price
  # 1  1    apple   100
  # 2  2   banana   200
  # 3  3    peach   300
  # 4 10    train  1000
  # 5 20      car  2000
  # 6 30 airplain  3000

df4 <- cbind(df1, df2)  #옆으로 합치기
  #   no   name price no     name price
  # 1  1  apple   100 10    train  1000
  # 2  2 banana   200 20      car  2000
  # 3  3  peach   300 30 airplain  3000

 

#행열의 개수 구하기 행 nrow() /  열 ncol()

length(df4) #6
ncol(df4) #6
nrow(df4) #3

 

* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.

728x90