이끼네

2. [7월 4일] R 스터디 본문

연구방법_통계/R

2. [7월 4일] R 스터디

이끼네 2023. 7. 4. 20:59

R의 문법구조
데이터 입력 / 저장 / 불러오기 / 확인
데이터 인덱싱: [ _ , _ ]
결측값 지정 및 코딩변경: ifelse(), replace(), match() 등
변수 유형 변경: factor(), as.factor()
변수 계산을 통한 변수 생성: rowMeans, rowSums()
기술통계(내장): table(), mean(), summary() 등
기술통계(psych 패키지): describe(), describeBy()

1. R이란?

  • 통계 분석용 무료 프로그래밍 언어
  • 다양한 통계 기법이 '패키지'로 개발되어 있으며, 다운로드 하여 활용 가능
  • 우수한 시각화 기능 제공
Python 과는 어떤 차이가 있는가?
- 아직도 통계를 주로 다룰 때는 R을 주로 많이 사용한다.
- Python은 최근 성장하는 데이터 사이언스 분야, 머신러닝 등 다양한 분야에서 활용하지만 통계 분석을 위해 코드를 개발하는 과정이 다소 복잡할 수 있음. 

 

2. R studio 기본 화면 구성

 

3. R 명령문 기본 문법

함수(인수, 인수, 인수...)
- 기본 내장 함수 제공, 기타 함수는 패키지를 활용한다.
- 인수(argument) : 함수를 적용할 대상, 대상이 포함된 데이터, 옵션 등
객체이름<-데이터/함수
예시] mymodel<-lm(formula=Y~X1+X2, data=mydata,...)
mymodel : 모형 객체
lm : 선형회귀 함수
formula=Y~X1+X2 : 인수 1
data=mydata : 인수 2

4. R 프로젝트 생성 기초

  • 특정 분석을 관리하기 위한 폴더 생성 필요 (어떤 논문을 위한 분석은 하나의 프로젝트 폴더에서 관리)
  • [File] - [New Project...]클릭 →기존 폴더를 활용할 경우 [Existing Directory]
  • 왼쪽 상단 (+)을 눌러 R script를 클릭

  • 내용을 입력하고 ctrl+enter 하면 명령이 실행됨.

  • 변수를 입력하려면 "<-"를 입력해야 함.

 

5. R 프로젝트 생성 기초(2)

c : 여러개의 값을 묶을 때 사용
rep : 반복한다.
" : " : 하나씩 번호가 입력되 도록 함(?)

6. 엑셀(csv) 파일로 내보내기 및 불러오기

1) 엑셀 파일로 내보내기

2) 엑셀 파일에서 가져오기

단, 다시 불러오게 될 때에는 열 번호가 추가 되기 때문에 인수에 "row.names=F"를 추가할 것
인수의 순서가 중요한가? - 함수에 따라 중요할 수도 있고, 아닐 수도 있다.
모든 인수를 다 적어야 하는가? - 디폴트 값을 고려하라.

 

7. R 기초 코드

1) 다양한 방법으로 파일을 불러오는 방식

newdata1 <- read.csv(“mydata.csv”)
newdata2 <- read.csv(“mydata.csv”, header=F)
newdata3<- read.csv(file.choose())

2)  데이터 확인

str(mydata) : 'data.frame': 300 obs. of 19 variables 하고 데이터를 보여
head(mydata) : 위에서 부터 6개 행
tail(mydata) : 아래서 부터 6개 
* $ 쓰면 데이터에 있는 변수를 볼 수 있음.

3) 데이터 인덱싱

- 자료의 k번째 열
dt[17]
dt[,17] : ","의 위치에 주목, 불러오는 형태가 달라짐 (길게 나오지 않고, 가로로 쫌 퍼져서?)
dt[17:18]

- 변수명을 통한 인덱싱
dt["K.score"]
dt[c("K.score","E.score")]

- 자료의 k번째 행
dt[14,] : ","의 위치에 주목
dt[14,2]

-조건에 해당하는 케이스 (인덱싱! 쉼표! 케이스를 찾는 것이므로)
dt.male<-dt[dt$genderR==0,]
dt.Khigh<-dt[dt$K.score>mean(dt$K.score, na.rm=TRUE),]
- na.rm=TRUE : 결측값이 있는 위치의 값들은 평균 계산 시 무시

4) 결측값 지정 및 코딩변경

인덱싱 기능, ifelse(), replace(), match() 등 활용
ifelse(test, if_yes, if_no) : dt$K.score <- ifelse(dt$K.score ==-9, NA, dt$K.score) 
심화 : dt$region1 <- ifelse(dt$region==1, ‘small’, ifelse(dt$region==2, ‘mid’, ‘large’))
꿀팁 : 변수가 덮어쓰기가 두렵다면, 새로운 변수를 입력하라!

replace(x, test, replacement value) : dt$E.score <- replace(dt$E.score, dt$E.score==-9, NA)
참고 : 이상 '>=', 이하 '<='
참고 : 같지 않을 때 '!=' / 조건 자체를 부정할 때 !(조건)

match(x, table) : dt$region2 <-c(‘small’, ‘mid’, ‘large’)[match(dt$regionR, c(1,2,3))]

5) 변수 유형 변경

factor(x, labels=c(범주1, 범주2, ⋯)) : dt$gender<-factor(dt$genderR, labels=c("male","female"))
as.factor(x) : dt$gender<-as.factor(dt$gender)

6) 변수 계산을 통한 변수 생성 (이거 언제 쓰는 거지?)

데이터명$새변수명 <- rowMeans(데이터명[c(변수1, 변수2, …)])
• dt$K.int <-rowMeans(dt[c("K.int1", "K.int2", "K.int3")], na.rm = T)
• dt$E.int <-rowMeans(dt[11:13], na.rm = T)
• dt$Total.Score<-rowSums(dt[17:19])
• dt$Mean.score1<-(dt$K.score+dt$M.score+dt$E.score)/3
• dt$Mean.score2<- rowMeans(dt[17:19], na.rm = T)

7) 빈도, 평균, 표준편차, 사분위수

table(데이터명$변수명, useNA=“ifany”) 빈도
• table(data1$gender, useNA="ifany")
참고 : ifany = 있으면 보여줘라!
• prop.table(table(data1$gender, useNA="ifany")) #비율
mean(데이터명$변수명) #필요시 na.rm=T 평균
sd(데이터명$변수명) #필요시 na.rm=T 표준편차
summary(데이터명$변수명) 사분위수

sapply(데이터, 적용할 함수, 옵션) #데이터의 각 열에 함수 적용
• sapply(dt[17:19], mean, na.rm=T), R은 불친절하니까...젠장

※ 왜도, 첨도의 경우 별도 패키지(fBasics 등) 설치 필요

8) 패키지 설치

패키지 설치 및 불러오기
• install.packages(‘psych’, dependencies = T) #최초 1회 실시
• library(psych) # R 실행 후 필요한 경우 그때그때 실시

describe(데이터명) / describe(데이터명$변수명) describeBy(x, 범주변수)
반응형

'연구방법_통계 > R' 카테고리의 다른 글

[R 스터디] ggplot2 관련 아이디어 링크  (0) 2023.07.31
[7월 25일] R 스터디  (0) 2023.07.25
[7/18] R 스터디  (0) 2023.07.18
[7월 11일] R 스터디  (0) 2023.07.11
R과 R Studio 다운로드 받기  (0) 2023.07.03