如何在R中的表格中找到每个列的前N个值?

时间:2017-02-28 18:50:00

标签: r

我对R很陌生,并努力将其用于基本数据分析。

如果我加载表格,我如何找到每个列的前10个值,以及每个值的频率&外表的数量?另外,我还想了解空白的频率。

使用“HSAUR”套餐中的“Forbes2000”......

    data("Forbes2000", package = "HSAUR")
    head(Forbes2000)

数据包含8列,其中一些(“rank”,“name”,“sales”等)每行唯一。但是,某些列(“国家/地区”,“类别”)并不是唯一的。

因此,对于每一列,我想找出前10个唯一值,它们的%频率和计数。此外,如果列包含至少一个空白/ NULL,则另一行显示相同的信息。如果每一行都是唯一的,请将结果限制为10行。

所以,像......(下面的数字组成)

   country              percentage   rank
   United States        85.35%       1
   United Kingdom       6.31%        2
   Canada               3.12%        3

   category             percentage   rank
   Banking              55.28%       1
   Conglomerates        20.75%       2
   Insurance            12.23%       3
   NULL                 3.32%        4
   Oil & gas operations 2.11%        5
   ...(etc)...

   sales                percentage   rank
   1234.56              0.05%        1
   987.65               0.05%        1
   986.32               0.05%        1
   822.12               0.05%        1
   ...(etc)...

我已经浏览了StackOverflow一段时间,发现了一些排名问题,它们本质上是2D(How to return 5 topmost values from vector in R?),或者是单列(how to find the top N values by group or within category (groupwise) in an R data.frame)。我正在寻找一种3D性质的解决方案,如附加

    names(Forbes2000)

似乎无法遍历所有列。

1 个答案:

答案 0 :(得分:0)

这样的东西?

library("HSAUR")
f<-function(x){
Freq<-(head(sort(table(x),decreasing=TRUE)*100/length(x),10))
rank<-1:10
rank<-rank-cumsum(duplicated(Freq))
data.frame(perc=paste(Freq,"%",sep=""),rank)
}
lapply(Forbes2000,f)