[사용 함수]
함수명 | 설명 |
data.frame() | 데이터 프레임 생성 |
str() | 데이터 구조 확인 |
names() | 열이름 지정 |
colnames() | 열이름 지정 |
rownames() | 행이름 지정 |
subset() | 조건에 맞는 행만 추출, 특정 열만 추출 |
cbind() | 열 추가(연결) |
rbind() | 행 추가(연결) |
merge() | 열과 행의 수가 다른 경우 사용, 기준에 대해 공통으로 있는 데이터를 연결하여 출력 |
length() | list처럼 열 개수 반환 |
NROW() | 행 개수 반환 |
NCOL() | 열 개수 반환 |
nrow() | 행 개수 반환 |
ncol() | 열 개수 반환 |
dim() | 차원 수 반환 및 지정 |
[데이타프레임 (data.frame)]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | > # data.frame > # 엑셀의 spreadsheet, DB의 테이블이 있다면, R에는 데이터 프레임 > # 각행(observation)과 열(key[variable] & value)의 수는 같아야함 > > no <- c(1,2,3,4) > name <- c('Apple','Peach','Banana','Grape') > price <- c(500,200,100,50) > qty <- c(5,2,4,7) > sales <- data.frame(NO=no,NAME=name,PRICE=price,QTY=qty) ; sales NO NAME PRICE QTY 1 1 Apple 500 5 2 2 Peach 200 2 3 3 Banana 100 4 4 4 Grape 50 7 > str(sales) 'data.frame': 4 obs. of 4 variables: $ NO : num 1 2 3 4 $ NAME : Factor w/ 4 levels "Apple","Banana",..: 1 4 2 3 $ PRICE: num 500 200 100 50 $ QTY : num 5 2 4 7 | cs |
[data.frame 데이터 제어]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | > # data.frame 데이터 제어 > > # 벡터형 반환 > sales$NAME [1] Apple Peach Banana Grape Levels: Apple Banana Grape Peach > sales[1,3] [1] 500 > sales[,3] [1] 500 200 100 50 > sales[[1]] [1] 1 2 3 4 > sales[["NO"]] [1] 1 2 3 4 > sales[,"NO"] [1] 1 2 3 4 > > # sub data.frame 반환 > sales[1,] NO NAME PRICE QTY 1 1 Apple 500 5 > sales[c(1,2),] NO NAME PRICE QTY 1 1 Apple 500 5 2 2 Peach 200 2 > sales[,c(1,2)] NO NAME 1 1 Apple 2 2 Peach 3 3 Banana 4 4 Grape > sales[,c(1:3)] NO NAME PRICE 1 1 Apple 500 2 2 Peach 200 3 3 Banana 100 4 4 Grape 50 > sales[1] NO 1 1 2 2 3 3 4 4 > sales["NO"] NO 1 1 2 2 3 3 4 4 > > #stringsAsFactors 를 사용해서 Factor변수를 chr로 변환 > sales <- data.frame(NO=no,NAME=name,PRICE=price,QTY=qty,stringsAsFactors = F) > str(sales) 'data.frame': 4 obs. of 4 variables: $ NO : num 1 2 3 4 $ NAME : chr "Apple" "Peach" "Banana" "Grape" $ PRICE: num 500 200 100 50 $ QTY : num 5 2 4 7 | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | > # names , colnames(), rownames() 함수 > sales2 <- matrix(c(1,'Apple',500,5, 2,'Peach',200,2, 3,'Banana',100,4, 4,'Grape',50,7),nrow=4,byrow=T) > df1 <- data.frame(sales2) ; df1 #데이터프레임으로 변환 X1 X2 X3 X4 1 1 Apple 500 5 2 2 Peach 200 2 3 3 Banana 100 4 4 4 Grape 50 7 > names(df1) <- c('NO','NAME','PRICE','QTY') ;df1 # 열이름 지정 NO NAME PRICE QTY 1 1 Apple 500 5 2 2 Peach 200 2 3 3 Banana 100 4 4 4 Grape 50 7 > colnames(df1) <- c('NO','NAME','PRICE','QTY') ;df1 # 열이름 지정 NO NAME PRICE QTY 1 1 Apple 500 5 2 2 Peach 200 2 3 3 Banana 100 4 4 4 Grape 50 7 > rownames(df1)<- c("S1","S2","S3","S4") ;df1 NO NAME PRICE QTY S1 1 Apple 500 5 S2 2 Peach 200 2 S3 3 Banana 100 4 S4 4 Grape 50 7 > > # subset() 함수, 부분집합 > subset(sales,QTY<5) # 조건에 맞는 행만 추출 NO NAME PRICE QTY 2 2 Peach 200 2 3 3 Banana 100 4 > subset(sales,NAME !="Apple") # Apple 빼고 다 NO NAME PRICE QTY 2 2 Peach 200 2 3 3 Banana 100 4 4 4 Grape 50 7 > subset(sales,select=c(NO,NAME)) #특정 열만 추출 NO NAME 1 1 Apple 2 2 Peach 3 3 Banana 4 4 Grape > subset(sales,select= -NAME) #특정 열만 제외 NO PRICE QTY 1 1 500 5 2 2 200 2 3 3 100 4 4 4 50 7 > > > # cbind(), rbind() 함수 > no <- c(1,2,3) > name <- c('apple','banana','peach') > price <- c(100,200,300) > df1 <- data.frame(NO=no,NAME=name,PRICE=price) > no <- c(10,20,30) > name <- c('train','car','airplane') > price <- c(1000,2000,3000) > df2 <- data.frame(NO=no,NAME=name, PRICE=price) > > df3 <- cbind(df1,df2); df3 # 칼럼이름이 같아도 연결되지만 좋지 못함 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 airplane 3000 > df4 <- rbind(df1,df2); df4 # 칼럼이 동일한 경우 행방향 연결 가능 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 airplane 3000 > > # merge() 열과 행의 수가 다른 경우 사용 > df1 <- data.frame(name=c('apple','banana','cherry'), price=c(300,200,100)) ;df1 name price 1 apple 300 2 banana 200 3 cherry 100 > df2 <- data.frame(name=c('apple','cherry','berry'), qty=c(10,20,30)) ; df2 name qty 1 apple 10 2 cherry 20 3 berry 30 > rbind(df1,df2) # 열 이름이 다르기 때문에 오류 Error in match.names(clabs, names(xi)) : names do not match previous names > > merge(df1,df2) #df1 기준으로 df2와 공통으로 있는 name 컬럼데이터를 출력함. name price qty 1 apple 300 10 2 cherry 100 20 > merge(df1,df2,all=T) #데이터가 없는 것도 모두 나오게 all=T 옵션 지정함. name price qty 1 apple 300 10 2 banana 200 NA 3 cherry 100 20 4 berry NA 30 > > merge(df2,df1) #df2 기준 name qty price 1 apple 10 300 2 cherry 20 100 > merge(df2,df1,all=T) name qty price 1 apple 10 300 2 berry 30 NA 3 cherry 20 100 4 banana NA 200 | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | > # 새로운 열 추가 및 삭제 > df1$qty<-NULL ; df1 name price 1 apple 300 2 banana 200 3 cherry 100 > qty <- c(10,20,30) > df1<-cbind(df1, qty); df1 name price qty 1 apple 300 10 2 banana 200 20 3 cherry 100 30 > df1$sales <-df1[[2]]*df1[[3]]; df1 #파생변수 생성 name price qty sales 1 apple 300 10 3000 2 banana 200 20 4000 3 cherry 100 30 3000 > > # length, NROW, NCOL, nrow, ncol 함수 > no <- c(1,2,3,4,5) > name <- c('Apple','Peach','Banana','Grape',"Mango") > price <- c(500,200,100,50,30) > qty <- c(5,2,4,7,10) > sales <- data.frame(NO=no,NAME=name,PRICE=price,QTY=qty,stringsAsFactors = F) ; sales NO NAME PRICE QTY 1 1 Apple 500 5 2 2 Peach 200 2 3 3 Banana 100 4 4 4 Grape 50 7 5 5 Mango 30 10 > > length(sales) # list처럼 열 개수 반환 [1] 4 > NCOL(sales) [1] 4 > NROW(sales) [1] 5 > ncol(sales) [1] 4 > nrow(sales) [1] 5 > > # names(), colnames(), rownames() 함수 사용 > names(sales) # 열 이름 반환 및 지정 [1] "NO" "NAME" "PRICE" "QTY" > colnames(sales) # 위와 같음 [1] "NO" "NAME" "PRICE" "QTY" > rownames(sales) # 행 이름 반환 및 지정 [1] "1" "2" "3" "4" "5" > > # dim() 함수 > dim(sales) # 차원 수 [1] 5 4 | cs |
출처 - 경영프로그래밍 강의 자료 (양성병 교수님)
'IT,인터넷 관련 학습 > R언어 학습' 카테고리의 다른 글
[R] 함수 I (0) | 2019.05.12 |
---|---|
[R] 데이터 입력 및 출력 (0) | 2019.05.12 |
[R] 리스트 (List) (0) | 2019.05.11 |
[R] 배열 (Array) (0) | 2019.05.11 |
[R] 행렬 (Matrix) (0) | 2019.05.11 |