본문 바로가기

데이터/R 프로그래밍

R 프로그래밍 기초 (1)

1. 변수 만들기

 

a<-1  #a에 1할당
a     #a 출력

##[1] 1

 

2. 여러 값으로 구성된 변수 만들기 

 

- c() 함수는 변수에 여러 개의 값을 넣는 기능

- 괄호 안에 쉼표를 이용해 숫자를 나열하는 형태 

 

var1 <- c(1,2,5,7,8) #숫자 5개로 구성된 var1 생성
var1

##[1] 1 2 5 7 8

 

- 콜론(:)을 이용해 시작 숫자와 마지막 숫자를 입력하면 1씩 증가하면서 연속된 숫자로 변수를 만듬

var2 <- c(1:5) #1~5까지 연속 값으로 var2 생성
var2

##[1] 1 2 3 4 5

 

- seq() 함수로도 연속 값을 지닌 변수를 만들 수 있음

- 괄호 안에 시작 숫자와 마지막 숫자를 쉼표로 구분하여 입력하는 형태 

var3 <-seq(1,5) #1~5까지 연속 값으로 var3 생성
var3

##[1] 1 2 3 4 5

- by 파라미터를 이용하면 일정한 간격을 두고 연속된 숫자로 된 변수를 만들 수 있음

var4 <- seq(1,10,by=2) #1~10까지 2간격 연속 값으로 var4 생성
var4

##[1] 1 3 5 7 9

 

- 여러 값으로 구성된 변수로도 연산 가능. 변수끼리 연산할 수도 있고, 변수와 숫자를 조합해 연산할 수도 있음

var1

##[1] 1 2 5 7 8

var1+2

##[1] 3 4 7 9 10

 

- 여러 값으로 구성된 변수끼리 연산하면 같은 순서에 위치한 값끼리 연산

- 변수 var1과 var2를 더하면 첫 번쨰 값은 var1의 첫 번째 값인 1과 var2의 첫 번째 값인 1을 더해 2가 되고, 

두 번째 값은 var1의 두 번째 값인 2와 var2의 두 번째 값인 2를 더해 4가 되는 식

var1

## [1] 1 2 5 7 8

var2

## [1] 1 2 3 4 5

var1+var2

##[1] 2 4 8 11 13

 

 

3. 문자로된 변수 만들기 

 

- str1에 소문자 a를 넣어 변수를 만듬. 변수에 문자를 넣을 때는 문자 앞뒤에 따옴표 "를 붙여야 함

str1 <-"a"
str1

##[1] "a"

 

- 문자 변수에는 하나의 문자, 여러개의 문자로 구성된 단어, 여러 개의 단어로 구성된 문장을 넣을 수 있고, 띄어쓰기나 특수문자를 넣을 수도 있음

str2 <- "text"
str2

##[1] "text"

str3 <- "Hello World!"
str3

##[1] "Helloc World!"

 

- c() 함수를 이용하면 여러 개의 문자로 구성된 변수를 만들 수 있음 

- 변수에 넣을 문자를 쉼표를 사용해 나열 

str4 <- c("a","b","c")
str4

##[1] "a" "b" "c"

str5 <- c("Hello!", "World", "is", "good!")
str5

##[1] "Hello!" "World" "is" "good!"

 

- 문자로 된 변수로는 연산 불가 

 

 

4. 숫자를 다루는 함수 이용하기 

 

1) 평균 mean()

 

#변수 만들기 
x<-c(1,2,3)
x

## [1] 1 2 3

# 함수 적용하기 
mean(x)

##[1] 2

 

2) 최댓값 max() 최솟값 min()

 

max(x)

##[1] 3

min(x)

##[1] 1

 

 

5. 문자를 다루는 함수 이용하기 

 

- 문자 처리 전용함수 이용

 

1) paste() - 여러 문자를 합쳐 하나로 만드는 함수 

 

- collapse는 단어를 구분할 문자를 지정하는 기능

str5

##[1] "Hello!" "World" "is"    "good!"

paste(str5, collapse=",") #쉼표를 구분자로 str5의 단어들 하나로 합치기 

##[1] "Hello!,World,is,good!"

 

- 함수의 결과물로 새 변수 만들기 

x_mean <- mean(x)
x_mean

##[1] 2

str5_paste <- paste(str5, collapse=" ")
str5_paste

##[1] "Hello! World is good!"

 

6. 패키지 

 

- R에서는 그래프를 만들고, 텍스트 데이터를 분석하고, 머신러닝 알고리즘을 구현하는 등 다양한 기능을 하는 함수를 이용할 수 있음

- 함수를 이용하려면 먼저 함수가 들어있는 패키지를 설치하고 불러들여야 함 

 

 ex) ggplot2에서는 ggplot(), gplot(), geom_histogram() 등 수십가지 그래프 관련 함수가 들어 있음

 

패키지 설치하기 -> 패키지 로드하기 -> 함수 사용하기 

 

- 패키지는 한번만 설치하면 되지만 패키지를 로드하는 작업은 R 스튜디오를 새로 시작할때마다 반복해야 함

 

1) ggplot2 패키지 설치

 

#ggplot2 패키지 설치 
install.packages("ggplot2")

 

 

 

2) ggplot2 패키지 로드 

 

- 패키지를 로드할 때는 libraray()를 사용 

#ggplot2 패키지 로드 
library(ggplot2)

 

3) 함수 사용

 

- ggplot2 패키지에 들어 있는 qplot() 함수를 이용해 간단한 빈도 막대 그래프 만들기 

#여러 문자로 구성된 변수 생성
x<-c("a","a","b","c")
x

#빈도 막대 그래프 출력 
qplot(x)

 

ex) ggplot2의 mpg 데이터로 그래프 만들기 

 

- mpg(Mile perGallon) 데이터는 미국 환경 보호국에서 공개한 자료로, 1999~2008년 사이 미국에서 출시된 자동차 234종의 연비 관련 정보를 담고 있음

 

- qplot()의 data 파라미터에 mpg 데이터를 지정하고, 그래프 x축을 결정하는 x 파라미터에 hwy를 지정해 '고속도로 연비별 빈도 막대 그래프' 만들기 

 

#x축 drv, y축 hwy, 상자 그림 형태, drv별 색 표현
qplot(data=mpg, x=drv, y=hwy, geom="boxplot", colour"drv)

 

 

- 함수 기능이 궁굼할땐 Help 함수 활용

#qplot 함수 매뉴얼 출력 
?qplot

 

 

7. 데이터프레임

 

- 데이터 프레임은 데이터를 직접 입력해 만들 수도 있고, 외부의 데이터를 가져와 만들 수도 있음

 

1) 데이터를 입력해 데이터 프레임 만들기 

영어 점수 수학 점수
90 50
80 60
60 100
70 20

 

- 변수 만들기 

english <-c(90,80,60,70) #영어 점수 변수 생성
english

##[1] 90 80 60 70

math <-c(50,60,100,20) #수학 점수 변수 생성 
math

##[1] 50 60 100 20

 

- 데이터 프레임 만들기 

 - 데이터 프레임을 만들 때는 data.frame()을 이용

 - 데이터 프레임을 구성할 변수를 괄호 안에 쉼표로 나열하면 됨

#english, math로 데이터 프레임을 생성해서 df_midterm에 할당
df_midterm <- data.fram(english, math)
df_midterm

## english math
##     90   50
##     80   60
##     60  100
##     70   20

 

- 학생의 반에 대한 정보가 추가된 데이터 프레임

 

class <- c(1,1,2,2)
class

##[1] 1 1 2 2

df_midterm<-data.frame(english,math,class)
df_midterm

## english math class
##     90   50     1
##     80   60     1
##      60  100     2
##     70   20     2

 

- 분석하기 

  - mean()을 이용해 전체 학생의 영어 점수와 수학 점수 평균 구하기 

  - mean()안에 입력된 df_midterm$english는 df_midterm 데이터 프레임 안에 있는 english 변수를 의미 

  - mean()안에 입력된 df_midterm$math는 df_midterm 데이터 프레임 안에 있는 math 변수를 의미 

 mean(df_midterm$english) # df_midterm의 english로 평균 산출
 
 ## [1] 75
 
 mean(df_midterm$math) # df_midterm의 math로 평균 산출
 ## [1] 57.5

 

- 데이터 프레임 한번에 만들기 

df_midterm <- data.frame(english = c(90,80,60,70), math = c(50,60,100,20), class = c(1,1,2,2))
                         
df_midterm

 

2) 외부 데이터 이용하기 

 

- 엑셀파일 불러오기 

 

●  readxl 패키지 설치하고 로드하기 

 

 - 엑셀 파일을 불러오려면 엑셀 파일을 불러오는 기능을 제공하는 패키지를 이용해야함

install.packages("readxl")
libarary(readxl)

 

엑셀 파일 불러오기 

 

 - readxl 패키지에서 제공하는 read_excel()을 이용해 엑셀 파일을 불러옴

 - read_excel()은 엑셀파일을 데이터 프레임으로 만드는 기능을 함 

 - 괄호 안에 불러올 엑셀 파일명을 넣으면 됨. 

 - 확장자(.xlsx)까지 기입해야하고, 양쪽에 따옴표(")가 들어가야 함 

 - R에서는 파일명을 지정할 때 항상 앞 뒤에 따옴표를 넣음

 

df_exam <-read_excel("excel_exam.xlsx") #엑셀 파일을 불러와 df_exam에 할당
df_exam #출력

id class  math english science
   <dbl> <dbl> <dbl>   <dbl>   <dbl>
 1     1     1    50      98      50
 2     2     1    60      97      60
 3     3     1    45      86      78
 4     4     1    30      98      58
 5     5     2    25      80      65
 6     6     2    50      89      98
 7     7     2    80      90      45
 8     8     2    90      78      25
 9     9     3    20      98      15
10    10     3    50      98      45
11    11     3    65      65      65
12    12     3    45      85      32
13    13     4    46      98      65
14    14     4    48      87      12
15    15     4    75      56      78
16    16     4    58      98      65
17    17     5    65      68      98
18    18     5    80      78      90
19    19     5    89      68      87
20    20     5    78      83      58

- 프로젝트 폴더가 아닌 다른 폴더에 있는 엑셀파일을 불러오려면 파일 경로를 지정하면 됨

df_exam<-read_excel("d:/easy_r/excel_exam.xlsx")

 

● 분석하기 

 

mean(df_exam$english)

##[1] 84.9

mean(df_exam$science)

##[1].59.45

 

- read_excel()은 기본적으로 엑셀 파일의 첫 번째 행을 변수명으로 인식해 불러옴

- 변수명 없이 첫 번째 행부터 바로 데이터가 시작되는 경우, 첫 번째 행의 데이터가 변수명으로 지정되면서 유실되는 문제 발생

 

- col_names=F 파라미터를 설정하면 첫 번째 행을 변수명이 아닌 데이터로 인식해 불러오고, 변수명은 '...숫자'로 자동 지정

df_exam_novar <-read_excel("excel_exam_novar.xlsx", col_names=F)
df_exam_novar

 

- 여러 개의 시트로 구성된 엑셀 파일을 불러올 경우 sheet 파라미터를 이용해 몇 번째 시트의 데이터를 불러올지 지정할 수 있음

#엑셀 파일의 세 번째 시트에 있는 데이터 불러오기 
df_exam_sheet <- read_excel("excel_exam_sheet.xlsx",sheet=3)

 

 

3) CSV 파일 불러오기 

 

CSV(Comma-separated Values)

- 값들이 쉼표로 구분되어 있는 파일 

 

● CSV 파일 불러오기 

 

- read.csv()을 이용하면 CSV 파일을 불러올 수 있음

- 첫 번째 행에 변수명이 없는 CSV 파일을 불러올 때는 header=F 파라미터를 지정

 

df_csv_exam <- read.csv("csv_exam.csv")
df_csv_exam
   id class math english science
   
   
1   1     1   50      98      50
2   2     1   60      97      60
3   3     1   45      86      78
4   4     1   30      98      58
5   5     2   25      80      65
6   6     2   50      89      98
7   7     2   80      90      45
8   8     2   90      78      25
9   9     3   20      98      15
10 10     3   50      98      45
11 11     3   65      65      65
12 12     3   45      85      32
13 13     4   46      98      65
14 14     4   48      87      12
15 15     4   75      56      78
16 16     4   58      98      65
17 17     5   65      68      98
18 18     5   80      78      90
19 19     5   89      68      87
20 20     5   78      83      58

 

4) 데이터 프레임을 CSV 파일로 저장하기 

 

- 데이터 프레임을 CSV 파일로 저장하면 R 외에도 데이터를 다루는 대부분의 프로그램에서 불러올 수 있음

 

● 데이터 프레임 만들기 

 

 df_midterm <- data.frame(english=c(90,80,60,70),math=c(50,60,100,20), class=c(1,1,2,2))
 df_midterm
 
 
  english math class
1      90   50     1
2      80   60     1
3      60  100     2
4      70   20     2

 

● CSV 파일로 저장하기 

 

- R 내장 함수인 wirte.csv()를 이용해 데이터 프레임을 CSV 파일로 저장

- 괄호 안에 저장할 데이터 프레임명을 지정하고, file 파라미터에 파일명을 지정하면됨 

 

write.csv(df_midterm, file="df_midterm.csv")

 

5)  RDS 파일 활용하기 

 

- RDS 파일은 R 전용 데이터 파일 

- R 전용 파일이므로 다른 파일들에 비해 R에서 읽고 쓰는 속도가 빠르고 용량이 작음

 

● 데이터 프레임을 RDS 파일로 저장하기 

 

- saveRDS()를 이용해 데이터 프레임을 .rds파일로 저장

saveRDS(df_midterm, file="df_midterm.rds")

 

● RDS 파일 불러오기 

 

- RDS 파일을 불러올 때는 readRDS()를 이용

- RDS 파일을 불러오기 전에 우선 앞에서 만든 df_midterm을 삭제 

- rm()을 이용하면 데이터를 삭제할 수 있음 

 

 rm(df_midterm)
 df_midterm
에러: 객체 'df_midterm'를 찾을 수 없습니다

 

- df_midterm.rds 파일을 readRDS()를 이용해 불러와 df_midterm에 할당

df_midterm<-readRDS("df_midterm.rds")
df_midterm


  english math class
1      90   50     1
2      80   60     1
3      60  100     2
4      70   20     2

'데이터 > R 프로그래밍' 카테고리의 다른 글

R 프로그래밍 기초 (4)  (0) 2023.10.16
R 프로그래밍 기초 (3)  (0) 2023.10.13
R 프로그래밍 기초(2)  (0) 2023.10.13