我有这两个数据帧。我在将这两个变量放在一个分组的条形图中时遇到了麻烦
> dxmale
F20 F25 F31 F32 F33 F34 F41
1 3 1 5 9 3 3
> dxfemale
F06 F20 F25 F28 F31 F32 F33 F34 F40 F41 F42 F50 F60
2 1 3 1 7 7 28 4 1 20 1 2 2
其中一个主要问题是许多列不匹配。我想放入一个分组的条形图,这样,如果一列中没有值,则在条形图中将显示为“0”。
感谢您的帮助。
答案 0 :(得分:1)
我们可以melt
(或stack
来自base R
- 正如@rawr所提到的那样)vector
和merge
library(reshape2)
dM <- merge(melt(dxmale), melt(dxfemale), by="row.names", all=TRUE)
如果需要,NA可以替换为0.
dM[is.na(dM)] <- 0
colnames(dM)[2:3] <- c("male", "female")
然后执行barplot
barplot(`colnames<-`(t(dM[-1]), dM[,1]), beside=TRUE, legend=TRUE)
如果我们需要按男性的sum
订购。和女性&#39;列
dM1 <- dM[order(Reduce(`+`, dM[-1])),]
barplot(`colnames<-`(t(dM1[-1]), dM1[,1]), beside=TRUE, legend=TRUE)
dxmale <- structure(c(1, 3, 1, 5, 9, 3, 3), .Names =
c("F20", "F25", "F31", "F32", "F33", "F34", "F41"))
dxfemale <- structure(c(2, 1, 3, 1, 7, 7, 28, 4, 1, 20, 1,
2, 2), .Names = c("F06",
"F20", "F25", "F28", "F31", "F32", "F33", "F34", "F40", "F41",
"F42", "F50", "F60"))
答案 1 :(得分:1)