如果您的数据Letter
列没有重复的值,这样
Df <- data.frame(
Letter=letters,
Total=sample(1:50,26),
stringsAsFactors=F)
你可以做到这一点,而不是使用prop.table
:
Df$Prop <- Df$Total/sum(Df$Total)
> head(Df)
Letter Total Prop
1 a 45 0.074875208
2 b 1 0.001663894
3 c 13 0.021630616
4 d 15 0.024958403
5 e 24 0.039933444
6 f 39 0.064891847
> sum(Df[,3])
[1] 1
如果有重复的值,如在此对象中
Df2 <- data.frame(
Letter=sample(letters,50,replace=T),
Total=sample(1:50,50),
stringsAsFactors=F)
你可以做一个table
总结的独特Letter
S中的频率,
Table <- table(rep(Df2$Letter,Df2$Total))
> Table
a b c d e f h j k l m n o p q t v w x y z
48 16 99 2 40 75 45 42 66 6 62 27 88 99 32 96 85 64 53 161 69
,然后这个table
对象使用prop.table
:
> prop.table(Table)
a b c d e f h j k l m
0.037647059 0.012549020 0.077647059 0.001568627 0.031372549 0.058823529 0.035294118 0.032941176 0.051764706 0.004705882 0.048627451
n o p q t v w x y z
0.021176471 0.069019608 0.077647059 0.025098039 0.075294118 0.066666667 0.050196078 0.041568627 0.126274510 0.054117647
你也可以制作成data.frame
这样的:
Df2.table <- cbind(
data.frame(Table,stringsAsFactors=F),
Prop=as.numeric(prop.table(Table)))
> head(Df2.table)
Var1 Freq Prop
1 a 48 0.037647059
2 b 16 0.012549020
3 c 99 0.077647059
4 d 2 0.001568627
5 e 40 0.031372549
6 f 75 0.058823529
尝试'lettersdf $ prop < - prop.table(lettersdf [,2])''。 – jbaums 2014-10-19 19:45:48
我无法重现您的错误。 class(lettersdf)'的结果是什么? – 2014-10-19 19:46:22
请为我们提供一个自包含的R代码来解决此问题。 – 2014-10-19 19:51:03