我试图在我提取的研究论文列表中绘制不同期刊的频率。我的数据框中的每一行都对应一张纸,我有相关的期刊。
我做了以下工作来绘制直方图中的水平(分类):
journal = main$Publication.Journal
tb <- table(journal)
barplot(tb[order(tb, decreasing=T)])
axis(2,at=seq(0, 12, 1), lab=seq(0, 12, 1))
唯一的问题是,我想从图表(或表格本身)中删除频率为1的期刊,因为我只想观察最频繁的期刊(因此订购的条形图)。 有关如何做到这一点的任何见解?
非常感谢! 拿但
答案 0 :(得分:2)
如果没有示例中的数据集,很难回答您的具体问题,所以这里有一个使用模拟示例的解决方案:
x <- rpois(100,100)
xt <- table(x)
xtd <- as.data.frame(xt)
xtds <- subset(xtd, Freq>1) # use subset, as noted by @baptiste
plot(Freq ~ x, xtd, type="h", ylim=c(0,10))
lines(Freq ~ x, xtds, type="h", col="red")
据我所知,我不知道您是否可以轻易地将data.frame
强制转换为table
,因此您可能需要一个不同的解决方案。另外,请注意逻辑测试的结果,例如xt > 1
可能对您有用。
答案 1 :(得分:2)
或者非常简单
tb <- tb[tb>1]
table
个对象的子集可以与任何array
个对象相同。
答案 2 :(得分:1)
您可以尝试这样的事情:
journal <- read.table(
header=TRUE, text='Name Article
JAMA A
MAD B
Cigar_Afficianado C
Bowling_Weekly D
JAMA E
MAD F
Cigar_Afficianado G
JAMA H
MAD I
Cigar_Afficianado J
')# create data set
library(plyr)
table(journal$Name) # as in your example
journal <- ddply(journal, .(Name), transform, Article_count = length(Article))
journal #shows new column from transform in plyr with a count of articles
journal <- journal[journal$Article_count > 1, ] #removes the low counts
journal #shows that the low counts are removed