[사용 함수]

함수명

설명

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
[1500
> sales[,3
[1500 200 100  50
> sales[[1]]
[11 2 3 4
> sales[["NO"]]
[11 2 3 4
> sales[,"NO"]
[11 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,52,'Peach',200,23,'Banana',100,44,'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처럼 열 개수 반환
[14
> NCOL(sales)
[14
> NROW(sales)
[15
> ncol(sales)
[14
> nrow(sales)
[15
> 
> # 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) # 차원 수 
[15 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

+ Recent posts