R中的均值和标准差
也许这是一个非常简单的问题。这是我的data.frame:R中的均值和标准差,r,mean,R,Mean,也许这是一个非常简单的问题。这是我的data.frame: > read.table("text.txt") V1 V2 1 26 22516 2 28 17129 3 30 38470 4 32 12920 5 34 30835 6 36 36244 7 38 24482 8 40 67482 9 42 23121 10 44 51643 11 46 61064 12 48 376
> read.table("text.txt")
V1 V2
1 26 22516
2 28 17129
3 30 38470
4 32 12920
5 34 30835
6 36 36244
7 38 24482
8 40 67482
9 42 23121
10 44 51643
11 46 61064
12 48 37678
13 50 98817
14 52 31741
15 54 74672
16 56 85648
17 58 53813
18 60 135534
19 62 46621
20 64 89266
21 66 99818
22 68 60071
23 70 168558
24 72 67059
25 74 194730
26 76 278473
27 78 217860
这意味着我有22516个长度为26的序列,17129个长度为28的序列,等等。我想知道序列长度的平均值及其标准偏差。我知道怎么做,但我知道怎么做,创建一个26次重复22516次的列表,以此类推。。。然后计算平均值和标准差。然而,我认为有一个更简单的方法。有什么想法吗
谢谢。平均值:(V1%*%V2)/sum(V2)
对于标准差:sqrt(((V1-(V1%*%V2)/sum(V2))**2%*%V2)/sum(V2))
weighted.mean(V1,V2) # 61.902
# recipe from http://www.ltcconline.net/greenl/courses/201/descstat/meansdgrouped.htm
sqrt((sum((V1^2)*V2)-(sum(V1*V2)^2)/sum(V2))/(sum(V2)-1)) # 14.23891
步骤1:设置数据:
dat.df <- read.table(text="id V1 V2
1 26 22516
2 28 17129
3 30 38470
4 32 12920
5 34 30835
6 36 36244
7 38 24482
8 40 67482
9 42 23121
10 44 51643
11 46 61064
12 48 37678
13 50 98817
14 52 31741
15 54 74672
16 56 85648
17 58 53813
18 60 135534
19 62 46621
20 64 89266
21 66 99818
22 68 60071
23 70 168558
24 72 67059
25 74 194730
26 76 278473
27 78 217860",header=T)
第三步:用产品建立新的专栏,并用它们来寻找平均值
dat[,pr:=V1*V2]
dat[,v1sq:=as.numeric(V1*V1*V2)]
dat.Mean <- sum(dat$pr)/sum(dat$V2)
dat.SD <- sqrt( (sum(dat$v1sq)/sum(dat$V2)) - dat.Mean^2)
dat[,pr:=V1*V2]
数据[,v1sq:=作为数字(V1*V1*V2)]
数据平均值Mean=(V1*V2)/sum(V2)
SD=sqrt((V1*V1*V2)/sum(V2)-平均值^2)平均值不错!有人知道SD吗?现在想弄清楚。。再坚强一点!我认为方差是((V1-平均值)**2)%*%V2)/sum(V2),SD是其中的sqrt。@gsauria,你的意思是和(d,sqrt((V1-平均值(V1))**2%*%V2)/sum(V2))
=17.3434347?是的,这基本上就是我的意思。谢谢在R中可能存在类似sd()和mean()的函数的重复。u可能希望探索它们。
dat[,pr:=V1*V2]
dat[,v1sq:=as.numeric(V1*V1*V2)]
dat.Mean <- sum(dat$pr)/sum(dat$V2)
dat.SD <- sqrt( (sum(dat$v1sq)/sum(dat$V2)) - dat.Mean^2)