반갑습니다. 님의 책을 통해 R 프로그래밍과 통계학에 대해 배우고 있습니다.
R 문법적인 기초를 쌓고 있는 중이라, 아래와 같은 의문점이 생겨 다양한 시도를 했으나 성공적으로 해결하지 못해 도움을 요청드립니다.
7장 연습문제를 푸는 중,
> anorexia <- read.csv("anorexia.csv")
> anorexia$ChWt <- anorexia$Postwt - anorexia$Prewt
# remove CBT only
> anorex_noCBT <- anorexia[anorexia$Treat != "CBT",]
> boxplot(ChWt ~ Treat, data = anorex_noCBT)
이렇게 해보니까, 그림에서 "CBT" box data는 없으나 x축에 여전히 CBT tick이 남아있습니다.
그래서 str(anorex_noCBT)로 확인해보니,
'data.frame': 43 obs. of 4 variables:
$ Treat : Factor w/ 3 levels "CBT","Cont","FT": 2 2 2 2 2 2 2 2 2 2 ...
$ Prewt : num 80.7 89.4 91.8 74 78.1 88.3 87.3 75.1 80.6 78.4 ...
$ Postwt: num 80.2 80.1 86.4 86.3 76.1 78.1 75.1 86.7 73.5 84.6 ...
$ ChWt : num -0.5 -9.3 -5.4 12.3 -2 ...
----
CBT level정보가 여전히 남아있다는 사실을 확인했습니다.
그리고, >anorex_noCBT 로 data를 확인해보니
....
24 Cont 77.5 81.2 3.7
25 Cont 72.3 88.2 15.9
26 Cont 89.0 78.8 -10.2
56 FT 83.8 95.2 11.4
57 FT 83.3 94.3 11.0
58 FT 86.0 91.5 5.5
.....
와 같이, 중간에 CBT에 해당되는 row는 없어졌는데, row index가 26에서 56으로 넘어가네요. CBT가 차지하는게 27~55 row에 해당되었기 때문이겠죠.
제가 원하는 것은, anorexia data.frame에서 CBT를 제외한 data.frame을 추출할 때,
그에 해당되는 Factor level도 없애고, row index가 중간 공백없이 깔끔한 data.frame을 얻고 싶습니다.
그렇게하면, boxplot에서도 CBT tick이 사라질 것으로 생각됩니다.
조언주시면 감사하겠습니다.
고맙습니다.
첫댓글 제 이름은 염현식이라고 합니다. 주제가 재미있는 것 같아 한 번 코드를 작성해 보았습니다
anorexia <- read.csv("anorexia.csv")
anorexia$ChWt <- anorexia$Postwt - anorexia$Prewt
anorex_noCBT <- anorexia[anorexia$Treat != "CBT",]
levels(anorex_noCBT$Treat)
anorex_noCBT$Treat <- factor(anorex_noCBT$Treat)
levels(anorex_noCBT$Treat)
boxplot(ChWt ~ Treat, data = anorex_noCBT)
factor 함수만 한 번 사용해 주면 정리가 될 것 같습니다
하..factor로 한번 훑어서 정리해주니, 깔끔하네요.
Black 53 님의 가르침 감사합니다.
아직 전 배워야할게 많네요. 더욱 더 열심히 해야....