【发布时间】:2017-02-28 18:49:59
【问题描述】:
我对 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 一段时间,发现了一些排名问题,它们本质上是二维的 (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)
似乎无法遍历所有列。
【问题讨论】:
-
写一个小函数
foo对一列执行你想要的操作,然后lapply(Forbes2000, foo)将它应用到每一列并在一个漂亮的列表中返回结果。 -
我打算写和 Gregor 刚才写的一样的评论。我认为这是一个很好的练习,因为这些是必要的基本 R 技能——甚至是用于数据分析的任何语言的必要和基本技能。
-
如果
lapply看起来太奇怪了,在列上写一个for循环。看看像 Hadley's Advanced R 这样的优秀在线 R 文本。 -
感谢您的回复。我希望这不会被标记为“太宽泛”。我正在尝试克服使用 R 来了解如何做到这一点时需要克服的“激活能量”(驼峰)。不幸的是,我没有看到太多关于如何对 R 中的多个字段执行多项操作(排名和百分比),因此我在上面包含了 SO 链接...
标签: r