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

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

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

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

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

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

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

瑞奇狐

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

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

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

【问题讨论】:

    标签: r data-analysis frequency-distribution


    【解决方案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] 完成了此操作
    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2022-01-26
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多