【问题标题】:R: Keeping only part of a list & is it possible to reverse cbind?R: 只保留列表的一部分 & 是否可以反转 cbind?
【发布时间】:2018-07-26 08:10:23
【问题描述】:

我有两个列表,每个列表包含 37 个项目(我在这里以 3 个为例):

vacancy.locations <- c("Amsterdam", "Zuid Holland", "Utrecht")
count.locations <- c("11", "9", "40")

我将这两个列表绑定在一起locations &lt;- cbind(vacancy.locations, count.locations,这样我就可以按降序排序sortedlocations &lt;- locations[order(-count.locations),],而不会丢失11 属于阿姆斯特丹和40 属于乌得勒支的事实。 但是,现在我只想保留数量最多的 10 个位置。谁能帮我做到这一点? 在此之后,我想在条形图中绘制前 10 个位置。目前我正在尝试使用 sortedlocations,但是我在图表中只得到 1 个条形图,所有位置都结合在一起。

barplotLocations <- barplot(height=sortedlocations, las=2, main="locations in vacancies", xlab="locations", ylab="number", cex.axis = .5, cex.names = .75)

帮助? :)

【问题讨论】:

  • 嘿,在这种情况下使用c() 会给你一个vector。您可以使用list() 获得一个列表。
  • 1.order count.locations desc。 2。使用df[1:10,]head(df,10)

标签: r sorting bar-chart reverse cbind


【解决方案1】:

这是使用 ggplot2 的一种简单方法

vacancy.locations <- letters
count.locations <- sample(1:1000, length(letters))

location = cbind.data.frame(vacancy.locations,count.locations)
location_sorted =  location[order(-count.locations),]

top_location = location_sorted[1:10,]
top_location[,1] = factor(top_location[,1], levels = top_location[,1][order(top_location[,2])])
library(ggplot2)
ggplot(data=top_location, aes(x=vacancy.locations, y=as.factor(count.locations))) +
  geom_bar(stat="identity")

【讨论】:

  • 谢谢!虽然我对开始部分有点困惑。我的 vacancy.locations 是 ac("...","...","...) 而你的只是字母这个词,所以这行得通吗?至于 count.locations .. 类似的问题,我有非常不同的东西。那么这与我所拥有的东西有什么关系呢?
  • @J Green 你有相同的数据类型,位置是字符串,计数是数字,所以没有什么不同。我刚刚制作了一些随机数据来复制你想要的东西。我所做的唯一不同的事情是使位置成为一个因素,这样它就可以正确地绘制出来。这对您的真实数据有用吗?是的,接受答案
  • 我收到一个错误:ggplot2 不知道如何处理类矩阵的数据
  • @J Green 这就是我使用 cbind.data.frame 的原因,因为 ggplot 仅适用于 data.frame,您应该使用 as.numeric 将变量 count.location 转换为数字。
  • omg 等等,它现在可以工作了!谢谢 :D 我可以再问一个问题吗?前 10 个位置未按顺序显示,是否可以这样做?那么左边的计数最高,右边的计数最低?
猜你喜欢
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 2020-08-15
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多