R中的均值和标准差

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

也许这是一个非常简单的问题。这是我的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    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)