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 中的矩阵没有那么丰富 Amatrix
只能包含一种类型(我们希望 prop.table
使用数字),因此在上面的示例中,我在除第一个(字符)列之外的所有内容上都使用了 as.matrix
。如果您愿意,您可以单独执行此操作并将第一列用作rownames
。
更新了我的问题,以适应我在您的帮助下取得的进展
@Rickyfox 查看margin
参数。对于要为整个表计算的比例,请在调用中省略它或使用 margin=NULL
您必须删除非数字列,我在示例中使用 x[-1]
完成了此操作以上是关于R计算数据框中的百分比值的主要内容,如果未能解决你的问题,请参考以下文章