빅데이터 1주차

2026. 3. 3. 12:262026 상반기 전공과목 공부/빅데이터

반응형

R에서 벡터를 다룰 때 대괄호 [] 안에 들어가는 값은 **위치(인덱스)**를 의미한다.

1. 숫자 하나만 쓰는 경우

대괄호 안에 숫자 하나만 쓰면 해당 위치의 값 하나만 선택하는 것이다.

v <- c(10, 20, 30, 40)
v[2]

위 코드는 두 번째 위치에 있는 값을 꺼내는 것이며 결과는 20이다.

즉, v[2]는 “두 번째 값”을 의미한다.


2. 여러 개를 동시에 선택하는 경우

여러 위치를 한 번에 선택하려면 c()를 사용한다.
c()는 여러 값을 하나로 묶어주는 함수이다.

v <- c(10, 20, 30, 40, 50)
v[c(1, 3, 5)]

위 코드는 1번째, 3번째, 5번째 위치의 값을 동시에 선택하는 것이다.
결과는 10, 30, 50이다.

즉, c(1, 3, 5)는 여러 인덱스를 하나로 묶은 것이고,
v[c(1, 3, 5)]는 해당 위치의 값들을 한 번에 가져오는 의미이다.


3. 정리

  • v[2]는 하나의 위치를 선택하는 것이다.
  • v[c(1, 3, 5)]는 여러 위치를 동시에 선택하는 것이다.
  • 대괄호 안에서 c()는 여러 인덱스를 묶어서 지정하는 역할을 한다.

4. 이름으로 선택하는 경우

벡터에 이름이 붙어 있는 경우에는 숫자 대신 이름으로도 선택할 수 있다.

v <- c(JAN=100, FEB=200, MAR=300)
v[c("JAN", "FEB")]

위 코드는 이름이 JAN과 FEB인 값을 선택하는 것이다.
결과는 100과 200이다.

이 경우에도 c()는 여러 이름을 묶어서 동시에 지정하는 역할을 한다.

요약하면, 대괄호 안에는 위치 번호나 이름을 넣을 수 있으며, c()는 여러 개를 한 번에 선택하기 위해 사용하는 함수이다.

 

실습

더보기
# [2024001910_r_실습2]
5+8
3+(4*5)
a <- 10
print(a)

# [2024001910_r_실습3]
5+8
3+(4*5)
a <- 10
print(a)

# [2024001910_r_실습7]
library(ggplot2)

# [2024001910_r_실습8]
2+3
(3+6*8)
2^3

# [2024001910_r_실습9]
7+4
# 2^3

# [2024001910_r_실습10]
log(10) + 5          # 로그함수  
sqrt(25)             # 제곱근  
max(5, 3, 2)         # 가장 큰 값

# [2024001910_r_실습11]
a <- 10
b <- 20
c <- a+b
print(c)

# [2024001910_r_실습12]
a <- 125
a
print(a)

# [2024001910_r_실습13]
a <- 10           # a에 숫자 저장
b <- 20           # a+b의 결과 출력
a+b
a <- "A"          # a에 문자 저장
a+b               # a+b의 결과 출력. 에러 발생

# [2024001910_r_실습14]
x <- c(1,2,3)                  # 숫자형 벡터 x
y <- c("a","b","c")            # 문자형 벡터 y
z <- c(TRUE, TRUE, FALSE, TRUE) # 논리형 벡터 z
x                              # x에 저장된 값을 출력
y
z

# [2024001910_r_실습15]
w <- c(1,2,3, "a", "b", "c")
w

# [2024001910_r_실습16]
v1 <- c(50:90)
v1
v2 <- c(1,2,5, 50:90)
v2

# [2024001910_r_실습17]
v3 <- seq(1, 101, 3)       # 1부터 101까지 간격은 3의 벡터
v3
v4 <- seq(0.1, 1.0, 0.1)   # 0.1부터 1까지 간격은 0.1의 벡터
v4

# [2024001910_r_실습18]
v5 <- rep(1, times=5)         # 1을 5번 반복
v5
v6 <- rep(1:5, times=3)       # 1에서 5까지 3번 반복
v6
v7 <- rep(c(1,5,9), times=3)  # 1, 5, 9를 3번 반복
v7

# [2024001910_r_실습19]
score <- c(90,85,70)                     # 성적
score
names(score)                             # score에 저장된 값들의 이름을 보이시오
names(score) <- c("John","Tom","Jane")   # 값들에 이름을 부여
names(score)                             # score에 저장된 값들의 이름을 보이시오
score                                    # 이름과 함께 값이 출력

# [2024001910_r_실습20]
d <- c(1,4,3,7,8)
d[1]     # d의 첫번째 값
d[2]     # d의 두번째 값
d[3]     # d의 세번째 값
d[4]     # d의 네번째 값
d[5]     # d의 다섯번째 값
d[6]     # d의 여섯번째 값 -> 값이 없을 경우 NA를 출력

# [2024001910_r_실습21] 제일 중요한 부분
d <- c(1,4,3,7,8)        # 1,4,3,7,8의 값 저장
d[c(1,3,5)]              # 1, 3, 5번째 값 출력
d[1:3]                   # 처음 세 개의 값 출력
d[seq(1,5,2)]            # 홀수 번째 값 출력
d[-2]                    # 2번째 값 제외하고 출력
d[-c(3:5)]               # 3~5번째 값은 제외하고 출력

# [2024001910_r_실습22]
GNP <- c(2090, 2450, 960)                     # GNP의 벡터에 2090, 2450, 960 저장
GNP
names(GNP) <- c("Korea", "Japan", "Nepal")    # 각각의 값에 이름 부여
GNP
GNP[1]                                        # 첫번째 요소 출력
GNP["Korea"]                                  # 'Korea'의 제목을 가진 값 출력
GNP[c("Korea", "Nepal")]                      # 'Korea', 'Nepal'의 제목을 가진 값 출력

# [2024001910_r_실습23]
v1 <- c(1,5,7,8,9)              # 1,5,7,8,9의 값으로 v1벡터 구성
v1
v1[2] <- 3                      # v1의 2번째 값을 3으로 변경
v1
v1[c(1,5)] <- c(10,20)          # v1의 1, 5번째 값을 각각 10, 20으로 변경
v1

# [2024001910_r_문제1]
# R을 이용하여 다음 계산식의 코드를 작성하고 답을 구하시오.
25 + 99
456 - 123
2 * (3 + 4)
(3 + 5 * 6) / 7
(7 - 4) * 3
210 + 35
1256 %% 7       # 나머지 연산
184 %% 5        # 나머지 연산
1976 / 24
16 * 25 + 186 * 5 - 67 * 22

# [2024001910_r_문제2]
# R에서 사용하는 주석처리 기호는 무엇인가
# 편집창에 주석 오른쪽에 자신의 이름을 기재
# 정상연

# 원의 면적은 pi × 반지름^2
pi <- 3.14

# [2024001910_r_문제3]
# R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

# 변수 pi에 3.14를 저장한 후, pi를 이용하여 반지름이 10, 12, 15인 원의 면적을 각각 구한다.
# 반지름이 10, 12, 15인 원의 면적 계산
pi * 10^2
pi * 12^2
pi * 15^2

# [2024001910_r_문제4]
# R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
# y = √x 에 대해 x가 각각 8, 12일 때 y의 값을 각각 구한다.
# 루트는 sqrt 함수 사용
x <- 8
y <- sqrt(x)
y

x <- 12
y <- sqrt(x)
y

# [2024001910_r_문제5]
# R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하십시오.
# 100~200 사이의 짝수(2의 간격)로 구성된 벡터 vc.2를 생성하고 vc.2의 내용을 출력
vc.2 <- seq(100, 200, by = 2)

# 벡터 출력
vc.2

# [2024001910_r_문제6]
# R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
# rep()를 이용하여 20개의 TRUE로 구성된 vc.3를 생성하고 vc.3의 내용을 출력
vc.3 <- rep(TRUE, 20)

# 벡터 출력
vc.3

# [2024001910_r_문제7]
# R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
# 100에서 200으로 구성된 벡터 d를 생성한 다음 각 문제를 수행

# (1) 100에서 200까지 벡터 d 생성
d <- 100:200
d

# (2) d의 10번째 값 출력
d[10]

# (3) d의 첫번째부터 20개의 값을 d.20에 저장하고 출력
d.20 <- d[1:20]
d.20

# (4) d.20의 5번째 값을 제외한 나머지 값 출력
d.20[-5]

# [2024001910_r_문제8]
#R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

#월별 결석생 수 통계가 다음과 같을 때 이 자료를 absent 벡터에 저장하십시오
#(결석생 수를 값으로 하고, 월 이름을 값의 이름으로 한다).

#월: JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
#결석생 수: 10 8 14 15 9 10 15 12 9 7 8 7

# (1) absent 벡터에 월별 결석생 수 저장
absent <- c(10, 8, 14, 15, 9, 10, 15, 12, 9, 7, 8, 7)
absent

# (2) 각 값에 월 이름 부여
names(absent) <- c("JAN","FEB","MAR","APR","MAY","JUN",
                   "JUL","AUG","SEP","OCT","NOV","DEC")
absent

# (3) 5월(MAY)의 결석생 수 출력
absent["MAY"]

이렇게 하면

실습 13에서 오류 나서 전체 실행 불가능
주석처리 후 재 실행

> # [2024001910_r_실습2]
> 5+8
[1] 13

> 3+(4*5)
[1] 23

> a <- 10

> print(a)
[1] 10

> # [2024001910_r_실습3]
> 5+8
[1] 13

> 3+(4*5)
[1] 23

> a <- 10

> print(a)
[1] 10

> # [2024001910_r_실습7]
> library(ggplot2)

> # [2024001910_r_실습8]
> 2+3
[1] 5

> (3+6*8)
[1] 51

> 2^3
[1] 8

> # [2024001910_r_실습9]
> 7+4
[1] 11

> # 2^3
> 
> # [2024001910_r_실습10]
> log(10) + 5          # 로그함수  
[1] 7.302585

> sqrt(25)             # 제곱근  
[1] 5

> max(5, 3, 2)         # 가장 큰 값
[1] 5

> # [2024001910_r_실습11]
> a <- 10

> b <- 20

> c <- a+b

> print(c)
[1] 30

> # [2024001910_r_실습12]
> a <- 125

> a
[1] 125

> print(a)
[1] 125

> # [2024001910_r_실습13]
> a <- 10           # a에 숫자 저장

> b <- 20           # a+b의 결과 출력

> a+b
[1] 30

> #a <- "A"          # a에 문자 저장
> #a+b               # a+b의 결과 출력. 에러 발생
> 
> # [2024001910_r_실습14]
> x <- c(1,2,3)                  # 숫자형 벡터 x

> y <- c("a","b","c")            # 문자형 벡터 y

> z <- c(TRUE, TRUE, FALSE, TRUE) # 논리형 벡터 z

> x                              # x에 저장된 값을 출력
[1] 1 2 3

> y
[1] "a" "b" "c"

> z
[1]  TRUE  TRUE FALSE  TRUE

> # [2024001910_r_실습15]
> w <- c(1,2,3, "a", "b", "c")

> w
[1] "1" "2" "3" "a" "b" "c"

> # [2024001910_r_실습16]
> v1 <- c(50:90)

> v1
 [1] 50 51 52 53 54 55 56 57
 [9] 58 59 60 61 62 63 64 65
[17] 66 67 68 69 70 71 72 73
[25] 74 75 76 77 78 79 80 81
[33] 82 83 84 85 86 87 88 89
[41] 90

> v2 <- c(1,2,5, 50:90)

> v2
 [1]  1  2  5 50 51 52 53 54
 [9] 55 56 57 58 59 60 61 62
[17] 63 64 65 66 67 68 69 70
[25] 71 72 73 74 75 76 77 78
[33] 79 80 81 82 83 84 85 86
[41] 87 88 89 90

> # [2024001910_r_실습17]
> v3 <- seq(1, 101, 3)       # 1부터 101까지 간격은 3의 벡터

> v3
 [1]   1   4   7  10  13  16
 [7]  19  22  25  28  31  34
[13]  37  40  43  46  49  52
[19]  55  58  61  64  67  70
[25]  73  76  79  82  85  88
[31]  91  94  97 100

> v4 <- seq(0.1, 1.0, 0.1)   # 0.1부터 1까지 간격은 0.1의 벡터

> v4
 [1] 0.1 0.2 0.3 0.4 0.5 0.6
 [7] 0.7 0.8 0.9 1.0

> # [2024001910_r_실습18]
> v5 <- rep(1, times=5)         # 1을 5번 반복

> v5
[1] 1 1 1 1 1

> v6 <- rep(1:5, times=3)       # 1에서 5까지 3번 반복

> v6
 [1] 1 2 3 4 5 1 2 3 4 5 1 2 3
[14] 4 5

> v7 <- rep(c(1,5,9), times=3)  # 1, 5, 9를 3번 반복

> v7
[1] 1 5 9 1 5 9 1 5 9

> # [2024001910_r_실습19]
> score <- c(90,85,70)                     # 성적

> score
[1] 90 85 70

> names(score)                             # score에 저장된 값들의 이름을 보이시오
NULL

> names(score) <- c("John","Tom","Jane")   # 값들에 이름을 부여

> names(score)                             # score에 저장된 값들의 이름을 보이시오
[1] "John" "Tom"  "Jane"

> score                                    # 이름과 함께 값이 출력
John  Tom Jane 
  90   85   70 

> # [2024001910_r_실습20]
> d <- c(1,4,3,7,8)

> d[1]     # d의 첫번째 값
[1] 1

> d[2]     # d의 두번째 값
[1] 4

> d[3]     # d의 세번째 값
[1] 3

> d[4]     # d의 네번째 값
[1] 7

> d[5]     # d의 다섯번째 값
[1] 8

> d[6]     # d의 여섯번째 값 -> 값이 없을 경우 NA를 출력
[1] NA

> # [2024001910_r_실습21] 제일 중요한 부분
> d <- c(1,4,3,7,8)        # 1,4,3,7,8의 값 저장

> d[c(1,3,5)]              # 1, 3, 5번째 값 출력
[1] 1 3 8

> d[1:3]                   # 처음 세 개의 값 출력
[1] 1 4 3

> d[seq(1,5,2)]            # 홀수 번째 값 출력
[1] 1 3 8

> d[-2]                    # 2번째 값 제외하고 출력
[1] 1 3 7 8

> d[-c(3:5)]               # 3~5번째 값은 제외하고 출력
[1] 1 4

> # [2024001910_r_실습22]
> GNP <- c(2090, 2450, 960)                     # GNP의 벡터에 2090, 2450, 960 저장

> GNP
[1] 2090 2450  960

> names(GNP) <- c("Korea", "Japan", "Nepal")    # 각각의 값에 이름 부여

> GNP
Korea Japan Nepal 
 2090  2450   960 

> GNP[1]                                        # 첫번째 요소 출력
Korea 
 2090 

> GNP["Korea"]                                  # 'Korea'의 제목을 가진 값 출력
Korea 
 2090 

> GNP[c("Korea", "Nepal")]                      # 'Korea', 'Nepal'의 제목을 가진 값 출력
Korea Nepal 
 2090   960 

> # [2024001910_r_실습23]
> v1 <- c(1,5,7,8,9)              # 1,5,7,8,9의 값으로 v1벡터 구성

> v1
[1] 1 5 7 8 9

> v1[2] <- 3                      # v1의 2번째 값을 3으로 변경

> v1
[1] 1 3 7 8 9

> v1[c(1,5)] <- c(10,20)          # v1의 1, 5번째 값을 각각 10, 20으로 변경

> v1
[1] 10  3  7  8 20

> # [2024001910_r_문제1]
> # R을 이용하여 다음 계산식의 코드를 작성하고 답을 구하시오.
> 25 + 99
[1] 124

> 456 - 123
[1] 333

> 2 * (3 + 4)
[1] 14

> (3 + 5 * 6) / 7
[1] 4.714286

> (7 - 4) * 3
[1] 9

> 210 + 35
[1] 245

> 1256 %% 7       # 나머지 연산
[1] 3

> 184 %% 5        # 나머지 연산
[1] 4

> 1976 / 24
[1] 82.33333

> 16 * 25 + 186 * 5 - 67 * 22
[1] -144

> # [2024001910_r_문제2]
> # R에서 사용하는 주석처리 기호는 무엇인가
> # 편집창에 주석 오른쪽에 자신의 이름을 기재
> # 정상연
> 
> # 원의 면적은 pi × 반지름^2
> pi <- 3.14

> # [2024001910_r_문제3]
> # R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
> 
> # 변수 pi에 3.14를 저장한 후, pi를 이용하여 반지름이 10, 12, 15인 원의 면적을 각각 구한다.
> # 반지름이 10, 12, 15인  .... [TRUNCATED] 
[1] 314

> pi * 12^2
[1] 452.16

> pi * 15^2
[1] 706.5

> # [2024001910_r_문제4]
> # R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
> # y = √x 에 대해 x가 각각 8, 12일 때 y의 값을 각각 구한다.
> # 루트는 sqrt 함수 사용
> x <- 8

> y <- sqrt(x)

> y
[1] 2.828427

> x <- 12

> y <- sqrt(x)

> y
[1] 3.464102

> # [2024001910_r_문제5]
> # R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하십시오.
> # 100~200 사이의 짝수(2의 간격)로 구성된 벡터 vc.2를 생성하고 vc.2의 내용을 출력
> vc.2 <- seq(100, 200, by = 2 .... [TRUNCATED] 

> # 벡터 출력
> vc.2
 [1] 100 102 104 106 108 110
 [7] 112 114 116 118 120 122
[13] 124 126 128 130 132 134
[19] 136 138 140 142 144 146
[25] 148 150 152 154 156 158
[31] 160 162 164 166 168 170
[37] 172 174 176 178 180 182
[43] 184 186 188 190 192 194
[49] 196 198 200

> # [2024001910_r_문제6]
> # R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
> # rep()를 이용하여 20개의 TRUE로 구성된 vc.3를 생성하고 vc.3의 내용을 출력
> vc.3 <- rep(TRUE, 20)

> # 벡터 출력
> vc.3
 [1] TRUE TRUE TRUE TRUE TRUE
 [6] TRUE TRUE TRUE TRUE TRUE
[11] TRUE TRUE TRUE TRUE TRUE
[16] TRUE TRUE TRUE TRUE TRUE

> # [2024001910_r_문제7]
> # R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
> # 100에서 200으로 구성된 벡터 d를 생성한 다음 각 문제를 수행
> 
> # (1) 100에서 200까지 벡터 d 생성
> d <- 100:200

> d
  [1] 100 101 102 103 104 105
  [7] 106 107 108 109 110 111
 [13] 112 113 114 115 116 117
 [19] 118 119 120 121 122 123
 [25] 124 125 126 127 128 129
 [31] 130 131 132 133 134 135
 [37] 136 137 138 139 140 141
 [43] 142 143 144 145 146 147
 [49] 148 149 150 151 152 153
 [55] 154 155 156 157 158 159
 [61] 160 161 162 163 164 165
 [67] 166 167 168 169 170 171
 [73] 172 173 174 175 176 177
 [79] 178 179 180 181 182 183
 [85] 184 185 186 187 188 189
 [91] 190 191 192 193 194 195
 [97] 196 197 198 199 200

> # (2) d의 10번째 값 출력
> d[10]
[1] 109

> # (3) d의 첫번째부터 20개의 값을 d.20에 저장하고 출력
> d.20 <- d[1:20]

> d.20
 [1] 100 101 102 103 104 105
 [7] 106 107 108 109 110 111
[13] 112 113 114 115 116 117
[19] 118 119

> # (4) d.20의 5번째 값을 제외한 나머지 값 출력
> d.20[-5]
 [1] 100 101 102 103 105 106
 [7] 107 108 109 110 111 112
[13] 113 114 115 116 117 118
[19] 119

> # [2024001910_r_문제8]
> #R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.
> 
> #월별 결석생 수 통계가 다음과 같을 때 이 자료를 absent 벡터에 저장하십시오
> #(결석생 수를 값으로 하고, 월 이름을 값의 이름으로 한다).
 .... [TRUNCATED] 

> absent
 [1] 10  8 14 15  9 10 15 12
 [9]  9  7  8  7

> # (2) 각 값에 월 이름 부여
> names(absent) <- c("JAN","FEB","MAR","APR","MAY","JUN",
+                    "JUL","AUG","SEP","OCT","NOV","DEC")

> absent
JAN FEB MAR APR MAY JUN JUL 
 10   8  14  15   9  10  15 
AUG SEP OCT NOV DEC 
 12   9   7   8   7 

> # (3) 5월(MAY)의 결석생 수 출력
> absent["MAY"]
MAY 
  9

 

 

'2026 상반기 전공과목 공부 > 빅데이터' 카테고리의 다른 글

빅데이터  (0) 2026.04.14
빅데이터 4주차 정리  (0) 2026.03.24