R计算数据框中的百分比值

Posted

技术标签:

【中文标题】R计算数据框中的百分比值【英文标题】:R compute percentage values in data frame 【发布时间】:2012-09-16 17:19:47 【问题描述】:

我今天的问题是指我在 R 中处理的一个数据框。 数据帧的头部如下所示:String(unique), Integer N[0-23]

这 24 个整数值表示与一天中的每个小时相关联的字符串的频率。从逻辑上讲,每行中的 int 值总和就是字符串在数据中出现的频率。

问题是,我不需要字符串在某个小时的实际频率,而是该频率代表的百分比相对于所有行中整数值的总和。

我的讲师暗示 table() 可能是正确的 R 工具,但老实说我不明白这应该如何帮助我。

如果所有其他方法都失败了,我会用 Java 计算它 - 尽管我非常感谢你在 R 中提供的帮助。

感谢您到目前为止的阅读,并提前感谢您的帮助,

瑞奇狐

@@@@@@我是你的编辑,读给我@@@@@@

在詹姆斯的帮助下,我得到了以下proptable

问题是,每行的百分比总和为 100,但他们应该为整个表这样做。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

在包含值的matrix 上使用prop.table

x <- data.frame(id=letters[1:3],val0=1:3,val1=4:6,val2=7:9)
prop.table(as.matrix(x[-1]),margin=1)
           val0      val1      val2
[1,] 0.08333333 0.3333333 0.5833333
[2,] 0.13333333 0.3333333 0.5333333
[3,] 0.16666667 0.3333333 0.5000000

编辑:一个完整的例子:

tt=read.table("topichitsperhod.csv",sep=",",header=TRUE)  
tt=na.omit(tt[-1])
pt=prop.table(tt[-1],margin=NULL)

第一列被省略,因为它包含主题字符串。

【讨论】:

感谢您的回答詹姆斯!在这里使用 as.matrix() 就足够了,还是我必须专门创建矩阵,第 1 列中的条目是行?我对 R 中的矩阵没有那么丰富 A matrix 只能包含一种类型(我们希望 prop.table 使用数字),因此在上面的示例中,我在除第一个(字符)列之外的所有内容上都使用了 as.matrix。如果您愿意,您可以单独执行此操作并将第一列用作rownames 更新了我的问题,以适应我在您的帮助下取得的进展 @Rickyfox 查看margin 参数。对于要为整个表计算的比例,请在调用中省略它或使用 margin=NULL 您必须删除非数字列,我在示例中使用 x[-1] 完成了此操作

以上是关于R计算数据框中的百分比值的主要内容,如果未能解决你的问题,请参考以下文章

在 r ggplot2 中为百分比值创建条形图

使用 MySQL 计算百分比值

margin/padding百分比值的计算

根据给定的因子在 R 中按函数分组获取多列的百分比值

在 OBIEE 中使用计算项目时如何获得正确的百分比值?

计算不同时间段内子组的数据框中的百分比变化