# 코드 3
d <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # 벡터 d를 생성
sum(d) # d의 모든 요소를 더함
# [1] 55
sum(2 * d) # d의 모든 요소를 2배로 늘린 후 더함
# [1] 110
length(d) # d의 요소 개수를 반환
# [1] 10
mean(d[1:5]) # d의 첫 5개 요소의 평균을 계산
# [1] 3
max(d) # d의 최대값을 반환
# [1] 10
min(d) # d의 최소값을 반환
# [1] 1
sort(d) # d를 오름차순으로 정렬
# [1] 1 2 3 4 5 6 7 8 9 10
sort(d) # 동일한 결과를 다시 출력
# [1] 1 2 3 4 5 6 7 8 9 10
sort(d, decreasing = FALSE) # d를 오름차순으로 정렬 (기본값)
# [1] 1 2 3 4 5 6 7 8 9 10
sort(d, decreasing = TRUE) # d를 내림차순으로 정렬
# [1] 10 9 8 7 6 5 4 3 2 1
v1 <- median(d) # d의 중앙값을 계산
v1 # 중앙값 출력
# [1] 5.5
v2 <- sum(d) / length(d) # d의 평균을 계산 (합계 / 요소 개수)
v2 # 평균 출력
# [1] 5.5
# 코드 4
d <- c(1, 2, 3, 4, 5, 6, 7, 8, 9) # 벡터 d를 생성
d >= 5 # d의 각 요소가 5 이상인지 확인
# [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
d[d > 5] # d에서 5보다 큰 요소만 선택
# [1] 6 7 8 9
sum(d > 5) # d에서 5보다 큰 요소의 개수를 계산
# [1] 4
sum(d[d > 5]) # d에서 5보다 큰 요소의 합을 계산
# [1] 30
d == 5 # d의 각 요소가 5와 같은지 확인
# [1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
condi <- d > 5 & d < 8 # d의 요소가 5보다 크고 8보다 작은 조건
d[condi] # 조건을 만족하는 d의 요소 선택
# [1] 6 7
리스트(List)
-다양한 데이터 유형의 요소 저장(동일값 저장, 여러 자료형을 혼합, 중복 가능)
-서로 다른 자료형의 값들을 1차원 배열에 저장하고 다룰 수 있도록 해주는 수단
- $, [[]] 를 사용
ex)필통 안에 연필, 지우개, 색연필이 다 들어 있는 것처럼, 리스트는 다양한 데이터를 한 곳에 모아 놓은 것
# 코드 6
# 리스트 생성
my_list <- list(name = "john", age = 25, scores = c(88, 92, 95)) # 이름, 나이, 점수를 포함한 리스트 생성
# 리스트의 요소에 접근
print(my_list$name) # name 요소 출력
# [1] "john"
print(my_list$age) # age 요소 출력
# [1] 25
print(my_list$scores) # scores 요소 출력
# [1] 88 92 95
팩터(factors)
-하나의 데이터형(동일값 없음, 중복X(단일 품목))
-벡터의 일존으로서 값의 종류가 정해져 있는 범주형 자료의 저장에 사용
-범주형 자료 예시: 성별, 혈액형, 선호 계절 등
ex)필통 안의 물건들을 "연필", "지우개", "색연필"로 분류한 것처럼, 팩터는 데이터를 특정 그룹으로 나누어 정리한 것
*R 데이터 구조 비교
: 리스트: 다양한 타입의 상자
팩터: 미리 정해진 카테고리를 가진 상자
# 코드 8
# 팩터 생성
colors <- factor(c("red", "blue", "green", "red", "blue")) # 색상 벡터를 팩터로 변환
# 팩터 출력
print(colors) # 생성된 팩터 출력
# [1] red blue green red blue
# Levels: blue green red (팩터의 레벨이 출력됨)
# 팩터의 레벨 확인
levels(colors) # 팩터의 레벨을 확인
# [1] "blue" "green" "red"
# 팩터의 각 레벨에 대한 빈도수 확인
table(colors) # 각 레벨에 대한 빈도수를 계산
# colors
# blue green red
# 2 1 2
매트릭스
-1차원 데이터: 몸무게 데이터와 같은 단일 주제의 데이터-> 벡터
-2차원 데이터: 키, 나이,와 같은 여러 주제의 데이터-> 매트릭스, 데이터프레임
-데이터 테이블의 모든 셀의 값들이 동일한 자료형->매트릭스
-자료형이 다른 값들로 구성->데이터프레임
-기존 매트릭스에 벡터를 추가해, 새로운 매트릭스 만들기
-cbind(벡터1, 벡터2)->벡터1과 벡터2를 열방향으로 결합
-rbind(벡터1, 벡터2)->벡터1과 벡터2를 행방향으로 결합
# 코드 11
x <- c(1:4) # 벡터 x 생성
y <- c(5, 8) # 벡터 y 생성
z <- matrix(1:20, nrow = 4, ncol = 5) # 매트릭스 z 생성
m1 <- cbind(x, y) # x와 y를 열 방향으로 결합하여 매트릭스 생성
m1 # 매트릭스 m1의 내용을 출력
# [,1] [,2]
# [1,] 1 5
# [2,] 2 8
# [3,] 3 NA
# [4,] 4 NA
m2 <- rbind(x, y) # x와 y를 행 방향으로 결합하여 매트릭스 생성
m2 # 매트릭스 m2의 내용을 출력
# [,1] [,2] [,3] [,4]
# [1,] 1 2 3 4
# [2,] 5 NA NA NA
m4 <- cbind(z, x) # 매트릭스 z와 벡터 x를 열 방향으로 결합
m4 # 매트릭스 m4의 내용을 출력
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 1 5 9 13 17 1
# [2,] 2 6 10 14 18 2
# [3,] 3 7 11 15 19 3
# [4,] 4 8 12 16 20 4
# 코드 12
z <- matrix(1:20, nrow = 4, ncol = 5) # 매트릭스 z 생성
z # 매트릭스 z의 내용 출력
# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 5 9 13 17
# [2,] 2 6 10 14 18
# [3,] 3 7 11 15 19
# [4,] 4 8 12 16 20
# 특정 값 접근
z[2, 3] # 2행 3열에 있는 값
# [1] 10
z[1, 4] # 1행 4열에 있는 값
# [1] 13
z[2, ] # 2행에 있는 모든 값
# [1] 2 6 10 14 18
z[, 4] # 4열에 있는 모든 값
# [1] 13 14 15 16
# 코드 13
z[2, 1:3] # 2행의 값 중 1~3열에 있는 값
# [1] 2 6 10
z[1, c(1, 2, 4)] # 1행의 값 중 1, 2, 4열에 있는 값
# [1] 1 5 13
z[1:2, ] # 1, 2행에 있는 모든 값
# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 5 9 13 17
# [2,] 2 6 10 14 18
z[, c(1, 4)] # 1, 4열에 있는 모든 값
# [,1] [,2]
# [1,] 1 13
# [2,] 2 14
# [3,] 3 15
# [4,] 4 16
# 코드 14
score <- matrix(c(90, 85, 69, 78, 85, 96, 49, 95, 90, 80, 70, 60), nrow = 4, ncol = 3)
rownames(score) <- c('John', 'Tom', 'Mark', 'Jane') # 행 이름 설정
colnames(score) <- c('English', 'Math', 'Science') # 열 이름 설정
score # score 매트릭스 출력
# English Math Science
# John 90 85 69
# Tom 78 85 96
# Mark 49 95 90
# Jane 80 70 60
# 코드 15
score['John', 'Math'] # John의 수학 성적
# [1] 85
score['Tom', c('Math', 'Science')] # Tom의 수학, 과학 성적
# Math Science
# 85 96
score['Mark', ] # Mark의 모든 과목 성적
# English Math Science
# 49 95 90
score[, 'English'] # 모든 학생의 영어 성적
# [1] 90 78 49 80
rownames(score) # score의 행 이름
# [1] "John" "Tom" "Mark" "Jane"
colnames(score) # score의 열 이름
# [1] "English" "Math" "Science"
colnames(score)[2] # score의 열 이름 중 두 번째 값
# [1] "Math"
데이터프레임
-숫자형 벡터, 문자형 벡터 등 서로 다른 형태의 데이터를 2차원 데이터 테이블 형태로 묶을 수 있는 자료구조
-외관상으로는 매트릭스와 차이가 없지만 매트릭스에 저장되는 모든 값들이 동일한 자료형(ex 모두 숫자)인과는 달리
데이터프레임에는 서로다른 자료형의 값들이 함께 저장(ex 성별, 나이 등)
-자료형이 같을 수도 있고 다를 수도 있는 여러 개의 벡터를 세로 방향으로 묶어 놓은 개념
data.frame(벡터1, 벡터2)
# 코드 16
city <- c("Seoul", "Tokyo", "Washington") # 문자로 이루어진 벡터
rank <- c(1, 3, 2) # 숫자로 이루어진 벡터
city.info <- data.frame(city, rank) # 데이터프레임 생성
city.info # city.info의 내용 출력
# city rank
# 1 Seoul 1
# 2 Tokyo 3
# 3 Washington 2
iris데이터셋
-R에서 제공하는 실습용 데이터셋 중의 하나로 데이터프레임으로 되어 있음
-150그루의 붓꽃에 대한 4개의 분야의 측정데이터와 품목 정보를 결합하여 만든 데이터셋(통계학과 머신러닝에서 널리 사용되는 유명한 실습용 데이터셋)
# 코드 17
iris[, c(1, 2)] # 1, 2열의 모든 데이터
# Sepal.Length Sepal.Width
# 1 5.1 3.5
# 2 4.9 3.0
# 3 4.7 3.2
# 4 4.6 3.1
# 5 5.0 3.6
iris[, c(1, 3, 5)] # 1, 3, 5열의 모든 데이터
# Sepal.Length Petal.Length Species
# 1 5.1 1.4 setosa
# 2 4.9 1.4 setosa
# 3 4.7 1.3 setosa
# 4 4.6 1.5 setosa
# 5 5.0 1.4 setosa
iris[, c("Sepal.Length", "Species")] # 1, 5열의 모든 데이터
# Sepal.Length Species
# 1 5.1 setosa
# 2 4.9 setosa
# 3 4.7 setosa
# 4 4.6 setosa
# 5 5.0 setosa
iris[1:5, ] # 1~5행의 모든 데이터
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
iris[1:5, c(1, 3)] # 1~5행의 데이터 중 1, 3열의 데이터
# Sepal.Length Petal.Length
# 1 5.1 1.4
# 2 4.9 1.4
# 3 4.7 1.3
# 4 4.6 1.5
# 5 5.0 1.4
'R' 카테고리의 다른 글
조건문, 반복문, 함수 (0) | 2025.04.05 |
---|---|
R의 기본연산/ 변수/ 벡터의 이해 (0) | 2025.03.08 |