연산자
대입 연산자
| <- , <<- , = | 오른쪽 값을 왼쪽에 대입 |
| -> , ->> | 왼쪽 값을 오른쪽에 대입 |
a <- 'abc'
"adsp" -> b
number1 <<- 10
Inf ->> d
logical = NA
비교 연산자
| == | 두 값이 같은지 비교 |
| ! = | 두 값이 다른지를 비교 |
| < , > | 초과, 미만을 비교 |
| < = , = > | 이상, 이하를 비교 |
| is.character | 문자형인지 아닌지를 비교 |
| is.numeric | 숫자형인지 아닌지를 비교 |
| is.logical | 논리형인지 아닌지를 비교 |
| is.na | NA인지 아닌지를 비교 |
| is.null | NULL인지 아닌지를 비교 |
a == 'abc'
a != 'abcdefg'
b > 'adsp'
number1 <= 20
is.na(logical)
is.null(NULL)
출력값은 TRUE, FALSE로 나옴
산술 연산자
| + | 두 숫자의 덧셈 (*문자끼리 덧셈 : ‘A’ + ‘B’) |
| - | 두 숫자의 뺄셈 |
| * | 두 숫자의 곱셈 |
| / | 두 숫자의 나눗셈 (소수점까지 표현) |
| %/% | 두 숫자의 나눗셈의 몫 |
| %% | 두 숫자의 나눗셈의 나머지 |
| ^ , ** | 거듭제곱 |
| exp( ) | 자연상수의 거듭제곱 |
7+3
7-3
7*3
7/3
7%/%3
7%%3
# 벡터 길이가 다를 경우, 긴 것을 기준으로 반복 연산함
x = c(1, 2, 3)
y = c(1, 2, 3, 4, 5, 6)
x + y # 2, 4, 6, 5, 7, 9
논리 연산자
| ! | 부정 연산자 : 현재의 논리값에 반대되는 값 |
| & | AND 연산자 : 두 값이 모두 참일 때만 참 |
| | | OR 연산자 : 둘 중 하나의 값만 참이더라도 참 |
!TRUE
TRUE&TRUE
TRUE&FALSE
!(TRUE&FALSE)
TRUE|FALSE
출력값은 TRUE, FALSE로 나옴
내장 함수
기본 함수
| help ( ) 또는 ? | 함수들의 도움말 확인 |
| paste ( ) | 문자열 이어 붙이기 |
| seq ( ) | 시작값, 끝값, 간격으로 수열 생성 |
| rep ( ) | 주어진 데이터를 일정 횟수만큼 반복 |
| rm ( ) | 대입 연산자에 의해 생성된 변수 삭제 |
| ls ( ) | 현재 생성된 변수들의 리스트 확인 |
| print ( ) | 해당 값을 콘솔창에 출력 |
help (paste)
?paste
paste('banana','juice') # "banana juice"
seq(1,16,2) # 1 3 5 7 9 11 13 15
rep(1,6) # 1 1 1 1 1 1
rm(a) # aError: object 'a' not found
ls() # "b" "d" "logical" "number1"
print(5)
통계 함수
| sum | 값의 합 |
| mean | 값의 평균 |
| median | 값의 중앙값 |
| var | 값의 표본 분산 |
| sd | 값의 표본 표준편차 |
| summary | 값의 요약값 |
| range | 값의 최솟값과 최댓값 |
vector1 <- c(1:9)
sum(vector1) # 45
mean(vector1) # 5
median(vector1) # 5
var(vector1) # 7.5
sd(vector1) # 2.738613
summary(vector1)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1 3 5 5 7 9
range(vector1) # 1 9
데이터 핸들링
벡터형 변수
a = c("a","b","c","d")
a[2] # "b"
a[-4] # "a" "b" "c" # 해당하는 값만 제외하고 나머지를 불러옴
a[c(2,3)] # "b" "c" # c함수와 함께 사용하면 여러 개를 불러올 수 있음
데이터 이름 변경
v1 <- matrix(c(1:6),nrow=2)
colnames(v1) <- c('a1','a2','a3') # 열 이름 지정
rownames(v1) <- c('b1','b2') # 행 이름 지정
데이터 추출/결합 응용
v2 <- matrix(c(1:6),nrow=3)
v2[3,2] # 6 # 원하는 위치의 데이터 찾기
colnames(v2) <- c('c1','c2')
rownames(v2) <- c('r1','r2','r3')
v2[,'c1'] # 1 2 3 # 이름을 지정해주면 그 이름의 행/열로도 데이터 찾기 가능
v2['r3','c2'] # 6
행렬끼리, 데이터프레임끼리는 행 또는 열의 수가 같을 경우 결합할 수 있다.
벡터끼리의 결합에서는 재사용 규칙으로 인해, 부족한 데이터를 재활용해 반환한다.
r1 <- c(1,2,3)
r2 <- c(4,5,6,7,8)
rbind(r1,r2)
# [,1] [,2] [,3] [,4] [,5]
# r1 1 2 3 1 2
# r2 4 5 6 7 8
# Warning message:
# In rbind(r1, r2) :
# number of columns of result is not a multiple of vector length (arg 1)
제어문
반복문
for 반복문
괄호 안의 조건 하에서 1값을 하나씩 증가시키며 중괄호 { } 안의 구문을 반복 실행한다.
주로 반복할 횟수를 지정해 반복시킬 때 사용!
e = c() # 아무런 값도 포함되지 않는 벡터 선언
for (i in 1:9) {
e[i] = i * i
}
# e 값을 출력하면 1 4 9 16 25 36 49 64 81
while 반복문
괄호 안의 조건 하에서 중괄호 { } 안의 구문을 반복 실행한다.
주로 조건에 부합할 시에만 반복시킬 때 사용!
f = 1
while(f<5){
f=f+1
print(f)
}
조건문
만약 조건에 부합한다면 실행, else라면 다른 실행을 하도록 하는 구문.
else 뒤에 조건문을 추가해서 계속 중첩시킬 수도 있다.
score = c(88, 90, 78, 84, 76, 68, 50, 48, 33, 70, 48,
66, 88, 96, 79, 65, 27, 88, 96, 33, 64, 48, 77, 18, 26, 44,
48, 68, 77, 64, 88, 95, 79, 88, 49, 30, 29, 10, 49, 88)
over70 = rep (0, 40)
for (i in 1:40) {
if (score[i] >= 70) {
over70[i] <- 1
} else {
over70[i] <- 0
}
}
over70
# [1] 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0
# [29] 1 0 1 1 1 1 0 0 0 0 0 1
sum(over70)
# [1] 18
사용자 정의 함수
사용자가 직접 함수를 만들어, 이후에 사용할 수 있도록 정의해 사용하는 함수.
# 인수 a까지의 합을 계산해주는 함수 예시
addto = function (a) {
isum=0
for (i in 1:a) {
isum=isum + i
}
print (isum)
}
addto ( 100 )
# [1] 5050
addto ( 50 )
# [1] 1275
그 외 유용한 기능들
substr
# 문자열에서 일부 추출
substr("dataanylysis",2,8)
# [1] "ataanyl"
cov
공분산이란?1
# 공분산 계산 기능
height <- c(150, 160, 170, 180, 190)
weight <- c(50, 60, 70, 80, 90)
covariance <- cov(height, weight)
cat("키와 몸무게 간의 공분산:", covariance, "\n")
# 키와 몸무게 간의 공분산: 250
# cat : "concatenate"의 약어로, R에서는 하나 이상의 인자를 연결하여 출력하는 함수이다.
# cat 함수는 화면에 문자열이나 값을 출력할 때 주로 사용된다.
cor
상관계수란?2
x <- c(1, 2, 3, 4, 5)
y <- c(2, 3, 5, 4, 6)
correlation <- cor(x, y)
cat("두 변수의 상관계수:", correlation, "\n")
# 두 변수의 상관계수: 0.9
날짜
Sys.Date() # 현재 연월일을 출력
# [1] "2026-05-29"
Sys.time() # 현재 연월일시를 출력
# [1] "2026-05-29 00:17:03 KST"
as.Date ("2026-05-29") # 데이터를 날짜 형식으로 변환
# [1] "2026-05-29"
# 포맷 변환
# %Y는 연도 네 자리, %y는 연도 두 자리, %m은 월, %d는 일, %A는 요일
> format(Sys.Date(),'%Y/%m/%d')
# [1] "2026/05/29"
형변환
as.data.frame() # 데이터 프레임 형식으로 변환
as.list() # 리스트 형식으로 변환
as.matrix() # 행렬 형식으로 변환
as.vector() # 벡터 형식으로 변환
as.factor() # 팩터 형식으로 변환
as.numeric() # 배열이나 다른 데이터 타입을 숫자로 변환
as.character() # 숫자, 날짜, 논리값 등 다양한 데이터 타입을 문자열로 변환
산점도 그래프
height = c(170,168,174,175,188,165,165,190,173,168,159,170,184,155)
weight = c(68,65,74,77,92,63,67,95,72,69,60,69,73,56)
plot(height, weight) # 가로, 세로 순
인사이트
C나 파이썬과 비슷하지만 다른 점이 있어서 조금 더 익숙해져야 알 것 같은 느낌이다.
ADsP 시험 통과를 위해서는 조금만 공부해도 괜찮을 것 같은 느낌.
Colab에서 학습했었던 ai관련 파이썬 느낌이 든다.