我对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)
似乎无法遍历所有列。
答案 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)