[R 데이터분석 실전] 여러 독립변수와 종속변수가 있는 데이터 분석
(3) 독립변수의 분석
우리가 다루고 있는 데이터는 아래와 같습니다. 2번강의에서 데이터를 불러온 상태로 진행됩니다.
table함수를 이용하면 독립변수의 범주별 인원수를 쉽게 구할 수 있습니다. 독립변수는 성별과 직업입니다.
> table(data[,1:2])
직업
성별 D P T
F 21 8 21
M 18 16 16
한눈에 알아보기 쉽도록 아래와 같은 표가 출력되도록 해봅시다.
|
D |
P |
T |
Total |
F |
21 |
8 |
21 |
50 |
M |
18 |
16 |
16 |
50 |
Total |
39 |
24 |
37 |
100 |
아래와 같이 코딩하면 됩니다.
tb=table(data[,1:2])
t1=rbind(data.frame(D=tb[1,1],P=tb[1,2],T=tb[1,3],Total=sum(tb[1,1:3])),
data.frame(D=tb[2,1],P=tb[2,2],T=tb[2,3],Total=sum(tb[2,1:3])),
data.frame(D=sum(tb[1:2,1]),P=sum(tb[1:2,2]),T=sum(tb[1:2,3]),Total=sum(tb)))
rownames(t1)=c("F","M","Total")
View(t1)
더 쉬운 방법도 있습니다. 아래 코드를 이용하면 table이 형태를
유지하며 data.frame으로 전환됩니다.
> dt=as.data.frame.matrix(tb)
> dt
D P T
F 21 8 21
M 18 16 16
여기에 total 행과 열을 추가해주겠습니다. 아래와 같이 더 간결한 코드로 표를 얻게 됩니다. 이후에 진행할 자동화에도 훨씬 용이한 형태입니다.
tb=table(data[,1:2])
df=as.data.frame.matrix(tb)
df=cbind(df,apply(df,1,sum))
df=rbind(df,apply(df,2,sum))
rownames(df)=c(rownames(tb),"total")
colnames(df)=c(colnames(tb),"total")
> df
D P T total
F 21 8 21 50
M 18 16 16 50
total 39 24 37 100
위 코드를 변형하여 표를 자동으로 그려주는 함수로 만들겠습니다. 데이터가 바뀌더라도 표를 그려줄 수 있는 함수입니다.
표는 독립변수가 최대 2개인 경우까지 그릴 수 있습니다. 독립변수 하나는 행에, 다른 하나는 열에 배치할 수 있기 때문입니다.
수준의 수는 많아도 상관 없습니다. 여기서 수준은 성별의 경우는 '남' '녀' 의 2수준이고, 직업의 경우는 '교사' '의사' '교수' 의 3수준입니다.
먼저 함수의 이름을 정합시다. 독립변수들로 표를 그려주는 함수이므로, idv.tb 라고 부릅시다. 독립변수가 하나인 경우와 둘인 경우로 나눕니다. 함수는 아래와 같습니다.
idv.tb=function(niv,data)
{
if (niv==1){
tb=table(data)
df=as.data.frame(tb)
df=rbind(df,data.frame(data="total",Freq=sum(df[,2])))
print(df)
} else if (niv==2) {
tb=table(data)
df=as.data.frame.matrix(tb)
df=cbind(df,apply(df,1,sum))
df=rbind(df,apply(df,2,sum))
rownames(df)=c(rownames(tb),"total")
colnames(df)=c(colnames(tb),"total")
print(df)
} else {
print("please insert 1 or 2 as niv")
}
}
입력 형식은 아래와 같습니다.
idv.tb(독립변수의 수, 데이터)
한번 사용해봅시다.
> idv.tb(1,data[,1])
data Freq
1 F 50
2 M 50
3 total 100
> idv.tb(1,data[,2])
data Freq
1 D 39
2 P 24
3 T 37
4 total 100
> idv.tb(2,data[,1:2])
D P T total
F 21 8 21 50
M 18 16 16 50
total 39 24 37 100
> idv.tb(3,data[,2])
[1] "please insert 1 or 2 as niv"
'R 실전 고급 > 예제1' 카테고리의 다른 글
[R 데이터분석 실전] 여러 독립변수와 종속변수가 있는 데이터 분석 (4) Type1: 2수준 독립변수 하나와 종속변수 (2) | 2020.08.28 |
---|---|
[R 데이터분석 실전] 여러 독립변수와 종속변수가 있는 데이터 분석 (2) 데이터 불러오기 (0) | 2020.08.28 |
[R 데이터분석 실전] 여러 독립변수와 종속변수가 있는 데이터 분석 (1) 개요 (0) | 2020.08.27 |
댓글