plot(iris)
str(Nile)
## Time-Series [1:100] from 1871 to 1970: 1120 1160 963 1210 1160 1160 813 1230 1370 1140 ...
head(Nile)
## [1] 1120 1160 963 1210 1160 1160
plot(Nile)
str(volcano)
## num [1:87, 1:61] 100 101 102 103 104 105 105 106 107 108 ...
head(volcano)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## [1,] 100 100 101 101 101 101 101 100 100 100 101 101 102
## [2,] 101 101 102 102 102 102 102 101 101 101 102 102 103
## [3,] 102 102 103 103 103 103 103 102 102 102 103 103 104
## [4,] 103 103 104 104 104 104 104 103 103 103 103 104 104
## [5,] 104 104 105 105 105 105 105 104 104 103 104 104 105
## [6,] 105 105 105 106 106 106 106 105 105 104 104 105 105
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## [1,] 102 102 102 103 104 103 102 101 101 102 103
## [2,] 103 103 103 104 105 104 103 102 102 103 105
## [3,] 104 104 104 105 106 105 104 104 105 106 107
## [4,] 104 105 105 106 107 106 106 106 107 108 110
## [5,] 105 105 106 107 108 108 108 109 110 112 114
## [6,] 106 106 107 109 110 110 112 113 115 116 118
## [,25] [,26] [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35]
## [1,] 104 104 105 107 107 107 108 108 110 110 110
## [2,] 106 106 107 109 110 110 110 110 111 112 113
## [3,] 108 110 111 113 114 115 114 115 116 118 119
## [4,] 111 114 117 118 117 119 120 121 122 124 125
## [5,] 115 118 121 122 121 123 128 131 129 130 131
## [6,] 119 121 124 126 126 129 134 137 137 136 136
## [,36] [,37] [,38] [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46]
## [1,] 110 110 110 110 110 108 108 108 107 107 108
## [2,] 114 116 115 114 112 110 110 110 109 108 109
## [3,] 119 121 121 120 118 116 114 112 111 110 110
## [4,] 126 127 127 126 124 122 120 117 116 113 111
## [5,] 131 132 132 131 130 128 126 122 119 115 114
## [6,] 135 136 136 136 135 133 129 126 122 118 116
## [,47] [,48] [,49] [,50] [,51] [,52] [,53] [,54] [,55] [,56] [,57]
## [1,] 108 108 108 108 107 107 107 107 106 106 105
## [2,] 109 109 109 108 108 108 108 107 107 106 106
## [3,] 110 110 109 109 109 109 108 108 107 107 106
## [4,] 110 110 110 109 109 109 109 108 108 107 107
## [5,] 112 110 110 110 110 110 109 109 108 107 107
## [6,] 115 113 111 110 110 110 110 109 108 108 108
## [,58] [,59] [,60] [,61]
## [1,] 105 104 104 103
## [2,] 105 105 104 104
## [3,] 106 105 105 104
## [4,] 106 106 105 105
## [5,] 107 106 106 105
## [6,] 107 107 106 106
filled.contour(volcano)
?hist
hist(Nile)
plot(cars)
?InsectSprays
X축 : 살충제의 종류 Y축 : 살충제를 뿌리고 남아있는 벌레 수
str(InsectSprays)
## 'data.frame': 72 obs. of 2 variables:
## $ count: num 10 7 20 14 14 12 10 23 17 20 ...
## $ spray: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 1 1 1 1 1 ...
boxplot(InsectSprays$count ~ InsectSprays$spray)
데이터의 요소 하나하나가 가지는 속성
integer
num01 = 1
chr01 <- '10'
chr02 <- 'hello world'
chr03 <- '안녕'
범주형 자료 (category) ‘a’,‘a’,‘a’, ‘b’,’b’는 1,1,1,2,2 : levels “a”, “b” 우리 눈에는 문자처럼 보이지만 내부에서는 숫자처럼 계산될 수 있어요.
TRUE/FALSE T와 F로 줄여쓸 수 있다. Numeric 안에 포함시킨 이유는 TRUE + TRUE 를 실행시켜보세요. TRUE는 1, FALSE는 0의 값을 가지고 있다.
sum(T,T,T,F,F)
## [1] 3
결측치 Missing Value를 표시한다.
벡터, 행렬, 시계열, 리스트, 데이터 프레임 등 여기서는 벡터와 데이터 프레임만 다룰게요!
동일한 타입의 데이터를 한 개 이상 저장해둔 형태 한개도 됩니다. c()로 생성
vector01 = c(1,2,3,4,5)
vector02 = 1:10
vector03 = c('a','b','c','d')
c(1,2,3,4,5)
## [1] 1 2 3 4 5
c(1,2,3,4,'5')
## [1] "1" "2" "3" "4" "5"
c(1,2,3,4,5.0)
## [1] 1 2 3 4 5
vector[숫자n]
vector01
## [1] 1 2 3 4 5
vector01[3]
## [1] 3
vector01[1:3]
## [1] 1 2 3
vector01[c(T,F,T,F,T)]
## [1] 1 3 5
vector01 > 3 # 조건을 만든다.
## [1] FALSE FALSE FALSE TRUE TRUE
vector01[vector01 > 3]
## [1] 4 5
%% 나머지 연산자. 벡터[인덱스]
vector01
## [1] 1 2 3 4 5
vector01 %% 2 == 0
## [1] FALSE TRUE FALSE TRUE FALSE
vector01[vector01 %% 2 == 0]
## [1] 2 4
vector02 = 1:10 에서 홀수만 출력해보세요.
vector02 = 1:10
vector02 %% 2
## [1] 1 0 1 0 1 0 1 0 1 0
as.logical(vector02 %% 2)
## [1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
vector02[as.logical(vector02 %% 2)]
## [1] 1 3 5 7 9
vector02[vector02 %% 2 ==1]
## [1] 1 3 5 7 9
행과 열의 길이가 일정하고 각 열마다 다른 형태의 자료를 담을 수 있다. 데이터베이스나 스프레드시트와 유사한 형태를 보인다.
score_df = data.frame(
math = c(40, 70, 80),
korean = c(50,60,70),
english = c(30,40,50),
art = c('A','A','C')
)
score_df$math
## [1] 40 70 80
score_df$art
## [1] A A C
## Levels: A C
새로운 열을 만들때는 데이터프레임$새로운열이름 <- 벡터
score_df$sum = score_df$math +
score_df$korean +
score_df$english
이름으로 접근 하는 방법. 데이터를 수정하는 방법.
6번째 열에 mean이라는 이름으로 국영수의 평균 점수를 넣어보세요.
score_df$mean <- (score_df$sum)/3
score_df
## math korean english art sum mean
## 1 40 50 30 A 120 40.00000
## 2 70 60 40 A 170 56.66667
## 3 80 70 50 C 200 66.66667
data.frame[행,열]
score_df
## math korean english art sum mean
## 1 40 50 30 A 120 40.00000
## 2 70 60 40 A 170 56.66667
## 3 80 70 50 C 200 66.66667
#2행2열
score_df[2,2]
## [1] 60
# 모든행,2열
score_df[,2]
## [1] 50 60 70
# 2열, 모든행
score_df[2,]
## math korean english art sum mean
## 2 70 60 40 A 170 56.66667
score_df[,c(1,3)]
## math english
## 1 40 30
## 2 70 40
## 3 80 50
# 국어, 미술 열 추출
score_df[,c('korean','art')]
## korean art
## 1 50 A
## 2 60 A
## 3 70 C
#수학점수가 50이 넘는 행
score_df[score_df$math > 50, ]
## math korean english art sum mean
## 2 70 60 40 A 170 56.66667
## 3 80 70 50 C 200 66.66667
여러분 안녕하세요.