코딩성장스토리

R data 연습 다루기 본문

기타

R data 연습 다루기

까르르꿍꿍 2022. 10. 25. 23:07

""에 있는건 다 예시

 

list.files()-작업 디렉토리 파일 보기


Csv파일 텍스트 (탭으로분리)로 만듬
data<-read.table("sp.txt",header=TRUE,sep="\t")  -- data라는 변수에  데이터 테이블 만들기
안되면 read.table("sp.txt",header=TRUE,sep='\t',fileEncoding="CP949",encoding="UTF-8)

 

기능 예시들

1.테이블 추출

 data[1:5,1:3] 행 과 열 정하기
head(data) 모든변수에 대해 행 6개 보여줌
a=data[ ,c("Q2A1","Q2A2")]     -- 열을 Q2A1,Q2A2 두 개 만 추출해서 테이블 만들고 a변수에 넣기
head(a)         -- 맨위에서 일부 추출 
dim(a)          -- 행 열 개수 알려줌
a1<-b[b$Q2B==4,]  --Q2B가 4인거 출력
a1<-a1[complete.cases(a1),]       --na인 값 빼고 출력  또한 중복된 값 제거

merge(a1,a2,key=pid)           --pid변수를 기준으로 a1,a2 테이블 합치기
sum(b$study)
Summary(data$필드명)- 최소 평균 다나옴
      (Min 음수나오면 그냥 코딩에러)

 

2.freq,hist 함수 쓰기위한 라이브러리
install.packages("descr")
library(descr)
freq(data$sex)

hist(d1$A_steps)    --histgram 만들기
hist(d1$A_steps,breaks=seq(0,10000,by=100))   --0부터 10000까지 100단위로 쪼갬

3.조건문
d1<-data[(data$A_steps>=0 & data$A_steps<=10000),]  -- ($뒤에 있는건 다 테이블안 변수)
View(d1)
Summary(d1)
d2$astepif<-ifelse(d2$A_steps>=3450,1,0)  -- 조건문에 속한거 1,0 데이터를 astepif라는 열 생성하고 넣음

 

더미데이터 만들기 
R2<-aggregate(r2$a_steps,list(r2$pid),mean) -한 피드에 여러개 스텝잇으면 여러개스텝 평균으로 한 피드에 나타냄
o1=aggregate(A_steps~pid,data=d1,mean)  -Pid를 기준으로 A_steps의 mean 나오기

aggregate(cbind(Q2A1,Q2A2)~Q2B,data=d1,mean)


4.분산분석법
t 검증 - 범위 2개

c1<-a[which(a$MH==7),]  mh 가 7 인 테이블

c2<-a[which(a$MH!=7),]  mh 가 7 아 아닌 테이블
C1_2<-rbind(c1,c2) 행으로 합침
var.test(HT ~ F_BR_2,data=a,conf.level=0.95)  -등분산 검정 p-value > 0.05 하면 등분산하다 분산이 같다
데이터 분포

a$F_BR_2<- ifelse(a$F_BR_1==7,1,0)
t.test(HT ~ F_BR_2,data=a,var.equal=FALSE,conf.level=0.95)   -p-value <0.05 이면 유의미 하게 차이있다.  

var.equal ->등분산 검정으로 결정

 

5.정규분포
shapiro.test(o3$A_steps) - p-value >0.05 이면 정규분포 따름  ,데이터 크면 굳이 정규분포 검정안해도됨
5000개 이내 잇어야함 

6.Anova -범위 3개이상 

 

a<-b[,c(3,4,8)]
aa$F_BR3=with(aa,ifelse(F_BR1==0,0,ifelse((F_BR1>=1&F_BR1<=6),1,2)))
1)등분산검정
bartlett.test(HT~F_BR3,data=a)
p-value<0.05 이면 분산 다르다
out=aov(HT~factor(F_BR3),data=a) 

summary(out)
2)사후검정
install.packages('agricolae')
library(agricolae)
TukeyHSD(out)
plot(TukeyHSD(out))    -- 각각 0을 포함하지 않으면 각각 유의한 차이 존재


개념
포아송분포 -이항분포인데 한쪽으로 치우침 (시긴개념이 든다)

 



비모수

1. Wilcoxon-Signed rank test 범주형(2)vs. 연속형중위수비교

wilcox.text(weight~group,data=data1,exact=FALSE,conf.level=0.95)  -weight 과 group을 data1이란 곳에서 꺼내와 비교

 

2.Kruskal-Wallis test 범주형(3)vs. 연속형중위수비교

 

kruskal.test(weight~group,data=data)  -weight 과 group을 data1이란 곳에서 꺼내와 비교

 

상관관계 

plot(speed~dist,data=cars)    -- cars란 곳에서 speed 와 dist 꺼내와 두 변수의 관계를 그림으로 나타냄
lines(lowess(cars))                   -- 라인을 따라그림
cor.test(cars$speed,cars&dist)    -- p-value<0.05 면 상관성이 있음

 

다중회귀 분석

res=lm(play ~ study, data=data)    -- study가 play에 미치는 영향력 계산후 res 담기
res
abline(res)
summary(res)          -- 요약해서 보여줌
AIC는 값이 작을수록 설명력이 커진다
Step(res,direction="forward")
Step(res,direction="backward")
Step(res,direction="both")
library(car)
vif(res) 10넘기면 비정확

 

값이 2개이상이면
res=lm(addicted ~play+ study, data=data)        -- addicted변수에 play,study가 미치는 영향을 계산후 res 담음
summary(res)

 


범주형 자료 분석

a4 <- CrossTable(b$obstruct,b$status) --범주현 변수 2개를 테이블로 만듬
a3<-table(b$mh,b$sex)
install.packages("Rcmdr")
library(Rcmdr)
rowPercents(a3)
colPercents(a3) 

chisq.test(b$mh,b$sex) 





'기타' 카테고리의 다른 글

aws CloudFront + S3  (3) 2023.02.14
Swagger + Security 적용  (2) 2023.01.26
Spring Security 공부 + Jwt 적용  (1) 2023.01.26
docker 안에 있는 mariaDB 접속하기  (0) 2022.09.15
docker mailserver 메일이 발송이 안될때  (0) 2022.09.14