2

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

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

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

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

如果一切都失败了,我会用 Java 计算它——尽管我真的很感谢你在 R 中提供的帮助。

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

瑞奇福克斯

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

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

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

4

1 回答 1

6

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

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)

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

于 2012-09-25T08:15:55.750 回答