处理数据:给出条件的情节

时间:2014-11-10 10:34:16

标签: database r data-management

我有一个由“数据”定义的数据框和这个数据集的两个子集(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))

现在我正在使用这些指示,但我很确定还有另一种更好的方法:

 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

1 个答案:

答案 0 :(得分: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")