R 통계 강의의 첫 시간 입니다. 이번 강의에서는 R 통계 강의에서 사용 될 R 프로그래밍의 기본적인 코드들과 연산자들을 학습하고, 주어진 데이터를 R 시스템에 불러오는지에 대하여 알아봅니다.
학습목표
아래는 R 통계 수업 1강의 목표입니다. 다음을 머리 속에 생각하면서 수업을 따라와주시기 바랍니다.
1. R 프로그래밍 기초 이해
- R 통계 강의에서 사용 될 기본적인 연산자와 함수를 학습하고 사용 할 수 있다.
- R에서 변수를 생성하고, 값을 할당하는 방법을 이해하고 적용할 수 있다.
2. 벡터와 행렬 조작
c()
함수와:
연산자를 사용하여 R에서 벡터를 생성하고 조작할 수 있다.matrix()
함수를 사용하여 행렬을 생성하고, 인덱싱을 통해 특정 원소에 접근할 수 있다.
3. 데이터 불러오기 및 조작
read.csv()
함수를 사용하여 CSV 파일을 불러와 데이터 프레임으로 저장할 수 있다.- 불러온 데이터 프레임의 일부를 선택하여 출력할 수 있다.
R 프로그래밍 기초 이해
R에서 기본 연산을 수행하는 방법을 배웁니다. 이는 R을 강력한 계산기로 만들어줍니다. 아주 멋있는 계산기이죠.
R에서 기본 사칙연산과 할당 연산자
R에서 활용할 수 있는 연산들은 사칙연산 등을 넘어서 수학, 공학, 통계 등 다양한 분야에서 활용되는 함수들도 포함됩니다.
- 덧셈
2 + 1
>> [1] 3
- 뺄셈
3 - 2
>> [1] 1
- 곱셈
2 * 3
>> [1] 6
- 나눗셈
4 / 2
>> [1] 2
- 제곱
4^2
>> [1] 16
- 제곱근
sqrt(4) # 4^0.5
>> [1] 2
- 나머지
9 %% 4
>> [1] 1
- 몫
9 %/% 4
>> [1] 2
변수 할당
R에서는 <-
기호를 사용하여 변수에 값을 할당합니다. 변수(variable
)는 데이터를 저장하고 조작하는 데 사용되며, 여러분의 코드를 더 효율적이고 가독성 있게 만들어줍니다.
a <- 4
a
>> [1] 4
b <- 2
b
>> [1] 2
b <- 3
b
>> [1] 3
a+b
>> [1] 7
벡터와 행렬 조작하기
R에서 벡터와 행렬을 생성하는 방법과 접근 및 조작하는 방법에 대하여 알아봅시다.
벡터 생성
Variable
꼭 하나의 숫자만을 담을 수 있는 것이 아니라 여러개의 숫자를 한꺼번에 담을 수 도 있습니다. c()
기호는 숫자가 묶여진 벡터(vector)를 만드는데 사용됩니다.
a <- c(1, 2, 3)
b <- c(4, 5, 6)
a
>> [1] 1 2 3
b
>> [1] 4 5 6
순차적인 벡터 생성
:
연산자와 seq()
함수를 사용하여 순차적인 숫자의 벡터를 쉽게 생성할 수 있습니다. 이는 반복문에서 인덱스를 생성하거나 일정한 간격의 수열을 만들 때 유용합니다.
a <- c(1:10)
a
>> [1] 1 2 3 4 5 6 7 8 9 10
벡터를 정의 할 때, 저는 주로 seq
명령어를 사용하는데, 이 함수의 옵션인 by
와 length.out
옵션을 잘 기억해 두세요.
by
옵션
by
옵션은 seq()
함수에서 숫자 시퀀스를 생성할 때 각 숫자 사이의 간격을 지정합니다. 이 옵션을 사용하면, 지정된 by
값만큼 증가 또는 감소하는 숫자 시퀀스를 생성할 수 있습니다.
seq(0, 1, by = 0.01)
>> [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14
>> [16] 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29
>> [31] 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44
>> [46] 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59
>> [61] 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74
>> [76] 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89
>> [91] 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00
length.out
옵션
length.out
옵션은 생성할 숫자 시퀀스의 총 길이를 지정합니다. 이 옵션을 사용하면, 시작값과 종료값 사이에서 지정된 길이만큼의 등간격 숫자 시퀀스를 생성할 수 있습니다.
seq(0, 1, length.out = 4)
>> [1] 0.0000000 0.3333333 0.6666667 1.0000000
여기서 length.out = 4
옵션은 총 4개의 숫자를 생성하도록 지정하며, 각 숫자는 시작값과 종료값 사이에 등간격으로 배치됩니다.
이 두 옵션은 seq()
함수의 유연성을 크게 높여줍니다. 사용자는 이를 활용하여 다양한 상황에 맞는 숫자 시퀀스를 손쉽게 생성할 수 있습니다.
벡터 인덱싱
대괄호(braket), []
, 연산자를 사용하여 벡터의 특정 원소에 접근할 수 있습니다. 이를 통해 데이터의 특정 부분을 선택, 조작, 분석할 수 있습니다.
a[3]
명령어는 벡터 a
의 세 번째 요소를 선택합니다. R은 1부터 인덱싱을 시작하므로, a[3]
는 벡터 a
에서 세 번째 요소인 40을 반환합니다.
a <- c(10, 50, 40, 20)
a[3]
>> [1] 40
a[1:3]
명령어는 벡터 a
의 첫 번째 요소부터 세 번째 요소까지를 선택합니다. 1:3
은 1, 2, 3의 숫자 시퀀스를 생성하므로, a[1:3]
는 벡터 a
에서 10, 50, 40을 반환합니다.
a[1:3]
>> [1] 10 50 40
행렬 정의하기
통계에서 자주 사용되는 행렬(matrix)을 정의하는 방법은 다음과 같습니다. 행렬은 수학적 연산과 데이터 조작에 있어 중요한 역할을 합니다. byrow
옵션을 통해 행렬을 채우는 방식을 선택할 수 있습니다.
아래 명령어는 1:16
으로 생성된 숫자 시퀀스를 사용하여 4×4 크기의 행렬을 생성합니다.
- 뒷쪽에 입력된
4, 4
는 행렬의 행과 열의 수를 지정합니다. 여기서는 4×4 행렬을 생성하게 됩니다.
matrix(c(1:16), 4, 4)
>> [,1] [,2] [,3] [,4]
>> [1,] 1 5 9 13
>> [2,] 2 6 10 14
>> [3,] 3 7 11 15
>> [4,] 4 8 12 16
아래 명령어는 byrow = TRUE
옵션을 추가하여 행렬을 행 우선 방식으로 채우는 예제입니다. 이 경우, 첫 번째 행이 먼저 채워지고, 그 다음 두 번째 행, 그리고 세 번째 행 순서로 채워집니다.
matrix(c(1:16), 4, 4, byrow = TRUE)
>> [,1] [,2] [,3] [,4]
>> [1,] 1 2 3 4
>> [2,] 5 6 7 8
>> [3,] 9 10 11 12
>> [4,] 13 14 15 16
행렬 인덱싱
[]
명령어는 정의된 행렬에서도 사용이 가능합니다. 행렬도 우리가 정의한 객체(object) 중 하나니까요.
단일 요소 선택
아래 명령어는 a
행렬의 첫 번째 행, 두 번째 열에 위치한 요소를 선택합니다.
1,2
인덱스는 행렬의 특정 위치를 가리키며, 이 위치에 있는 값5
를 반환합니다.
a <- matrix(c(1:16), 4, 4)
a[1,2]
>> [1] 5
열의 여러 요소 선택
1:3
인덱스는 첫 번째 행부터 세 번째 행까지를, 2
인덱스는 두 번째 열을 가리킵니다. 이를 통해 두 번째 열의 첫 번째부터 세 번째 행에 위치한 5, 6, 7
값을 선택합니다.
a[1:3,2]
>> [1] 5 6 7
a[1:4,3]
>> [1] 9 10 11 12
특정 열의 모든 요소 선택
,3
인덱스는 세 번째 열을 가리키며 행의 인덱스가 지정되지 않았기 때문에 모든 행을 선택합니다. 이 경우, 세 번째 열의 모든 값 9, 10, 11, 12
를 선택합니다.
a[,3]
>> [1] 9 10 11 12
행렬의 부분 선택
1:3
인덱스는 첫 번째부터 세 번째 행까지를, 1:2
인덱스는 첫 번째부터 두 번째 열까지를 선택합니다. 이로 인해 행렬의 왼쪽 상단 부분이 선택되며, 1, 2, 3
및 5, 6, 7
값을 포함하는 3×2 부분 행렬을 얻게 됩니다.
a[1:3,1:2]
>> [,1] [,2]
>> [1,] 1 5
>> [2,] 2 6
>> [3,] 3 7
R에서 데이터 불러오기
예제 파일 다운로드
중간고사 데이터 셋을 다운로드 합니다. 그리고 examscore.csv
이라는 파일명으로 폴더에 저장합니다. 파일을 저장할 때 꼭 자신의 working directory
에 저장하셔야 합니다.
파일 불러오기
파일은 다운 받은 후 다음과 같이 파일을 불러옵니다. read.csv()
함수는 CSV (Comma Separated Values) 파일을 읽어와 R에서 사용할 수 있는 데이터 프레임으로 변환하는 함수입니다.
"examscore.csv"
는 읽어올 CSV 파일의 이름입니다. 이 파일은 함수를 실행되는 작업 디렉토리에 있어야 합니다.header = TRUE
는 파일의 첫 번째 행에 열의 이름(헤더)이 포함되어 있음을 나타내는 옵션입니다. 이 옵션을 설정하면 R은 첫 번째 행의 값을 열 이름으로 사용하게 됩니다.
head()
함수는 데이터 프레임의 처음 여섯 행을 출력하는 함수입니다. 이를 통해 데이터의 일부를 빠르게 검토하고, 데이터의 구조와 내용을 이해하는 데 도움을 받을 수 있습니다. 만약 아래의 결과를 보셨다면 성공입니다.
mydata <- read.csv("examscore.csv", header = TRUE)
head(mydata)
>> student_id gender midterm final
>> 1 1 F 38 46
>> 2 2 M 42 67
>> 3 3 F 53 56
>> 4 4 M 48 54
>> 5 5 M 46 39
>> 6 6 M 51 74