R 통계 강의의 첫 시간 입니다. 이번 강의에서는 R 통계 강의에서 사용 될 R 프로그래밍의 기본적인 코드들과 연산자들을 학습하고, 주어진 데이터를 R 시스템에 불러오는지에 대하여 알아봅니다.

학습목표

아래는 R 통계 수업 1강의 목표입니다. 다음을 머리 속에 생각하면서 수업을 따라와주시기 바랍니다.

1. R 프로그래밍 기초 이해

  • R 통계 강의에서 사용 될 기본적인 연산자와 함수를 학습하고 사용 할 수 있다.
  • R에서 변수를 생성하고, 값을 할당하는 방법을 이해하고 적용할 수 있다.

2. 벡터와 행렬 조작

  • c() 함수와 : 연산자를 사용하여 R에서 벡터를 생성하고 조작할 수 있다.
  • matrix() 함수를 사용하여 행렬을 생성하고, 인덱싱을 통해 특정 원소에 접근할 수 있다.

3. 데이터 불러오기 및 조작

  • read.csv() 함수를 사용하여 CSV 파일을 불러와 데이터 프레임으로 저장할 수 있다.
  • 불러온 데이터 프레임의 일부를 선택하여 출력할 수 있다.

R 프로그래밍 기초 이해

R에서 기본 연산을 수행하는 방법을 배웁니다. 이는 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에서 벡터와 행렬을 생성하는 방법과 접근 및 조작하는 방법에 대하여 알아봅시다.

다루는 R
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, 35, 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

Similar Posts