외부 데이터 불러오기
- R은 다양한 형태의 외부 데이터를 불러올 수 있음
- csv, txt, xls, xlsx파일을 R로 불러올 수 있음
- 경로 지정할 때는 '\' 대신에 '\\'이나 '/'을 사용함
- CSV 파일 불러오기
data1 <- read.table("D:\\DATA\\example.csv", header=T, sep=",")
- read.csv 메서드를 사용하면 sep을 따로 명시할 필요가 없음
- TXT 파일 불러오기
data2 <- read.table("D:\\DATA\\example.txt")
- XLS/XLSX 파일 불러오기
- 엑셀 파일은 csv파일로 바꿔서 불러오거나, R의 RODBC 패키지를 이용해서 불러옴
- 엑셀 파일의 경로를 입력하는 경우 확장자를 생략하고 작성해야 하는 점에 유의
- 워크시트의 이름은 대소문자를 구분하므로 정확하게 작성
library(RODBC)
new <- odbcConnectExcel("c:\\data\\mydata")
yourdata <- sqlFetch(new, "Sheet1")
close(new)
R의 기초함수
1) 수열 생성하기
1) rep, seq
rep(1, 3)
# 1 1 1
rep(2:5, 3)
# 2 3 4 5 2 3 4 5 2 3 4 5
seq(1, 3)
# 1 2 3
1:3
# 1 2 3
seq(1, 11, by=2)
# 1 3 5 7 9 11
seq(1, 11, length=6)
# 1 3 5 7 9 11
seq(1, 11, length=8)
# 1.000000 2.428571 3.857143 5.285714 6.714286 8.142857 9.571429 11.000000
2) 기초적인 수치 계산
- 행렬 계산을 비롯핸 다양한 형태의 수치 계산을 위한 함수와 명령어가 있음
- 기본적으로 벡터와 벡터의 사칙연산을 수행하는 경우 연산되는 벡터들의 길이는 같아야 함
- R에서 벡터를 생성할 때는 기본적으로 열벡터가 만들어짐
- 행렬 곱을 실시하기 위해서는 t 명령어를 통해 주어진 행렬의 전치 행렬(Transpose matrix)를 구하고, %*%를 통해 실시
a = c(2, 7, 3)
a
# 2 7 3 (column vector)
t(a)
# 2 7 3 (row vector)
A = a %*% t(a)
A
# 4 14 6
# 14 49 21
# 6 21 9
- 행렬 A에 대해 * 연산을 실시하면 스칼라 곱의 결과를 얻을 수 있음
- solve 명령어를 통해 행렬의 역행렬을 계산할 수 있음
- 벡터의 평균, 분산, 표준편차 = mean(a), var(a), sd(a)
- 벡터의 합, 중앙값, 자연로그값 = sum(a), median(a), log(a)
- 서로 다른 두 벡터에 대해서 공분산과 상관계수 = cov(a, b), cor(a, b)
- 주어진 벡터에 대해 각 사분위 수와 최솟값, 최댓값, 중앙값, 평균을 계산 = summary(a)
R 데이터 핸들링
- R은 객체지향 언어이기 때문에 변수를 불러오거나 변수 내의 요소들을 참조하는 것이 직관적이고 간단함
1) 벡터형 변수
- b[n]은 b벡터 내에서 n번째 원소에 해당하는 값을 불러옴
- b[-n]은 b벡터 내에서 n번째 원소만 제외하고 불러옴
- b[c(2, 3)]은 b벡터 내에서 2, 3번째 위치 값을 선택함
b = c("a", "b", "c", "d", "e")
b[2]
# "b"
b[-4]
# "a" "b" "c" "e"
b[c(2, 3)]
# "b" "c"
2) 행렬 / 데이터프레임형 변수
- df[m, n]은 df데이터프레임 내에서 m행 n열 데이터를 불러옴
- df[ , 2]는 df데이터프레임 내에서 2열의 값을 모두 불러옴
- df[4, ]는 df데이터프레임 내에서 4행의 값을 모두 불러옴
- df[-m, ]는 df데이터프레임 내에서 m행을 제외하고 모두 불러옴
- df[ , -n]는 df데이터프레임 내에서 n열을 제외하고 모두 불러옴
- df[-m, -n] 등 제외하는 경우는 두 개를 한꺼번에 쓸 수 없음
반복 구문과 조건문
1) for 반복 구문
a = c() # 빈 벡터 선언
for (i in 1:9)
{
a[i] = i * i
}
a
# 1 4 9 16 25 36 49 64 81
2) while 반복 구문
x = 1
while (x < 5)
{
x = x + 1
print(x)
}
# 2
# 3
# 4
# 5
3) if-else 반복 구문
for (i in 1:40)
{
if (statscore[i] >= 70) over70[i] = 1
else over70[i] = 0
}
댓글