일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Spring
- 알고리즘
- 브루트포스
- 순열
- dfs
- github action
- AWS
- TCP
- 스프링
- 트리
- CI/CD
- 백준
- 분할정복
- GIT
- BFS
- 컴퓨터 네트워크
- 다이나믹프로그래밍
- HTTP
- 다이나믹 프로그래밍
- 분할 정복
- 도커
- 역방향 반복자
- 그리드
- SQL
- 재귀
- 그리드 알고리즘
- 그래프
- 이분탐색
- 자바
- 자료구조
- Today
- Total
코딩성장스토리
R data 연습 다루기 본문
""에 있는건 다 예시
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 |