2014-11-10 8 views
0

У меня есть кадр данных, определенный «данными» и двумя подмножествами этого набора данных (scale1, scale2). Я хочу рассчитать эту шкалу по полу, а затем по стране, без необходимости определять весы каждый раз. Я знаю, что это возможно в R, и может быть вопросом новичков, но я просто не могу найти логику для этого. Я искал его, но я не могу найти то, что хочу. Если кто-то может дать мне ключ к этому управлению данными (не для печати), я был бы очень благодарен.Работа с данными: график, дающий условие

Я знаю, что этот простой DataFrame может быть проще определять подмножества каждый раз, но в моем исходном Dataframe есть много элементов, и работать с этим сложно.

Data<- data.frame(item1=c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, NA, 5, NA, NA), 
        item2=c(1, 2, 2, 4, 1, 1, 2, 3, 5, 5, NA, NA, NA, NA), 
        item3=c(1, 2, 2, 4, 1, 1, 2, 3, 5, 5, NA, NA, NA, NA), 
        item4=c(1, 2, 2, 4, 1, 1, 4, 3, 1, 5, NA, 3, NA, NA), 
        item5=c(1, 5, 2, 4, 2, 1, 2, 3, 5, 5, NA, NA, 1, NA), 
        item6=c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, NA, 5, NA, NA), 
        item7=c(1, 2, 1, 5, 1, 2, 2, 3, 5, 5, NA, NA, NA, NA), 
        item8=c(1, 4, 2, 4, 3, 1, 2, 8, 5, 5, NA, NA, NA, NA), 

        gender=c(1, 2, 1, 2, 2,1, 2, 1, 2, 1, 1, 2, 1, 2), 
        country=c(1, 2, 3, 3, 1,1, 2, 1, 3, 1, 3, 2, 1, 2)) 

scale1 <- subset(Data, select=c(item1, item2, item3, item4)) 
scale2 <- subset(Data, select=c(item5, item6, item7, item8)) 

Теперь для построения я использую это instrucions, но я уверен, что есть еще один лучший способ сделать это:

womandata <- Data[ which(Data$gender== "1"), ] 

scale1F <-subset(womandata, select= c(item1, item2, item3, item4)) 
scale2F <-subset(womandata, select= c(item5, item6, item7, item8)) 



mandata <- Data[ which(Data$gender== "2"), ] 

scale1M <-subset(mandata, select= c(item1, item2, item3, item4)) 
scale2M <-subset(mandata, select= c(item5, item6, item7, item8)) 

par(mfrow=c(2,1)) 

boxplot(scale1F, xlab="", xaxt = "n", col="gray", main="Woman") 
text(1:34, par("usr")[1], 
    srt=45, pos=1, xpd=TRUE, offset=-1) 

boxplot(scale1M, xlab="", xaxt = "n", col="gray", main ="Man") 
text(1:34, par("usr")[1], 
    srt=45, pos=1, xpd=TRUE, offset=-1) 

enter image description here

С наилучшими пожеланиями,

Angulo

+0

Ваши подмножества идентичны. – Roland

+0

Я не понял, когда копирующую пасту, спасибо. –

+0

Я не уверен, как вы делаете заговор. Пожалуйста, добавьте это для своего примера. – Roland

ответ

1

Я все еще не уверен в вашей цели, но, возможно, это помогает :

female <- Data$gender == 1 
scale1 <- names(Data) %in% c("item1", "item2", "item3", "item4") 

boxplot(Data[female, scale1], xlab="", xaxt = "n", col="gray", main="Woman") 
boxplot(Data[!female, scale1], xlab="", xaxt = "n", col="gray", main="Man") 
+0

, который мог бы работать, когда есть только два значения :), так что это helps.Ive пробовал, что логично и попытаться сделать страну == 1/2/3, и он также работает, так что это отлично :) Спасибо –