R:Barplots&用变量分隔它们

时间:2015-11-26 22:23:05

标签: r

我收到了一个数据集&我把它转换成矩阵。我一直想知道如何根据列中矩阵的值创建一个条形图。我基本上必须比较两个变量,这些变量是他们操作的年份和他们的生存状态。他们的生存状态基于2个值,1个是超过5年,2个是5年内死亡。我想比较两个变量,这取决于它们是否在1965年以前进行过操作。 1965年之后。总共我总共寻找了4个酒吧,其中1个是在1965年之前经营并幸免于难,另一个是他们在1965年之前经营并且去世了,另一个是他们在1965年之后经营并幸免于难他们在1965年后被操作并死亡。如果有人可以帮助我,真的很感激!我的代码如下:

data<-data.matrix(readingfile)
Survival<-c(data[,4])
Year<-c(data[,2])
Comparison<-matrix(c(Year,Survival),ncol=2)
barplot(Comparison) # I know it's this line of code I will have to add arguments in, in order to make it work.

1 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题。所以我为你提供了一个非常基本的解决方案,我把所有的阶段分开,所以必须有适合你的东西; - )

让我知道它是怎么回事!

# Let's first create some fake data
survival <- sample(1:2, 100, replace=T)
year <- sample(1940:1990, 100, replace=T)
comparison <- data.frame(year, survival)

# We sum each category for each year
sum.per.year <- rbind(tapply(comparison$survival, comparison$year, function(x) sum(x==1)),
    tapply(comparison$survival, comparison$year, function(x) sum(x==2)))
# We create a logical vector to check what years are in the period we target
year.before.1965 <- sapply(colnames(sum.per.year), function(c) as.numeric(c)<1965)
# Now we aggregate (sum) the results for before and after 1965
sum.per.year <- t(data.matrix(sum.per.year))
res <- sapply(1:2,function(c) tapply(sum.per.year[,c],year.before.1965,sum))
colnames(res) <- c("Lived.over.5","Died.in.5")
rownames(res) <- c("Before.1965","After.1965")

# And finally we output
barplot(res, beside=T, col=c("blue","red"))
legend("topleft", rownames(res), pch=15, col=c("blue","red"), bty="o")

# OR, depending on what how you want to present the results
barplot(t(res), beside=T, col=c("blue","red"))
legend("topleft", colnames(res), pch=15, col=c("blue","red"), bty="o")