编程新手 - 单列平均值

时间:2015-04-30 23:00:42

标签: r

在我分配的练习中,它要求为数据框的每一列提供基本的描述性统计数据。我的表名为SATGPA20R,我尝试了attach(SATGPA20R),但没有得到任何结果。如何计算单个列的数据?

以下是我正在使用的数据:

ID  SEX State   SATV    SATM    GPA
2   1   1   1   590 590 3.20
3   2   1   1   670 660 3.03
4   3   1   1   540 520 2.69
5   4   1   2   620 600 3.06
6   5   1   3   610 510 3.03
7   6   1   1   560 500 3.03
8   7   1   3   480 590 3.48
9   8   1   2   620 560 3.62
10  9   1   1   510 610 3.21
11  10  1   1   630 530 3.73
12  11  1   2   580 530 3.51
13  12  1   2   490 560 3.04
14  13  2   2   620 540 3.02
15  14  2   3   520 550 3.01
16  15  2   3   620 620 3.47
17  16  2   2   480 530 2.90
18  17  2   1   500 630 2.87
19  18  2   1   640 560 2.38
20  19  2   1   390 430 2.41
21  20  2   1   540 520 2.56

1 个答案:

答案 0 :(得分:3)

attach使data.frame中的字段可用作普通变量,如:

# make a simple data.frame
df <- data.frame(gpa = 1 + runif(50)*3)
# attach it to the search path
attach(df)

# use the field names as orinary variables
sd(gpa)
#> [1] 0.857903
mean(gpa)
#> [1] 2.686774

虽然它确实为您节省了一些输入以附加data.frame,但它会混淆您的代码,因此很难确定变量的定义位置。这在实践中通常不是很好的权衡,所以我会说它偏向于更具描述性的代码,例如:

# access the fields via the $ and [ operators
sd(df$gpa)
#> [1] 0.857903
mean(df[,'gpa'])
#> [1] 2.686774

也就是说,如果你想为data.frame的每一列计算一个汇总统计量,我喜欢使用lapply(),它利用了data.frames基于如下列表的事实: / p>

lapply(df, # the data.frame to be summarized
       sd) # the summary statistic. 

如果汇总统计量是一个原子值,如数字或恒定长度向量(如cryo111中的示例),则使用sapply()会很方便,它会尽可能返回向量或矩阵:

sapply(df, # the data.frame to be summarized
       sd) # the summary statistic. 

sapply(df,function(x) list(mean=mean(x),sd=sd(x),var=var(x)))