1 对下列数列
7.3, 6.8, 0.005, 9, 12, 2.4, 18.9, 0.9
(a) 计算数列的均值;
> a=c(7.3, 6.8, 0.005, 9, 12, 2.4, 18.9, 0.9)
> mean.a=mean(a)
> mean.a
[1] 7.163125
(b) 将均值从数列中减去;
std.a=a-mean(a)
[1] 0.136875 -0.363125 -7.158125 1.836875 4.836875
[6] -4.763125 11.736875 -6.263125
(c) 找出数列中本身大于其平方根的所有元素;
for(i in 1:8)
if(a[i]>=sqrt(a[i]))
print(a[i])
[1] 7.3
[1] 6.8
[1] 9
[1] 12
[1] 2.4
[1] 18.9
(d) 将每个元素的平方根近似到小数点后两位 (使用函数 round ).
> sqrt.a=sqrt(a)
> roundsqrt.a=round(sqrt.a,digits=2)
> roundsqrt.a
[1] 2.70 2.61 0.07 3.00 3.46 1.55 4.35 0.95
2 定义 area = state.x77[,"Area"]. 请将 area 以逆序的形式显示出来。
area[50:1]
3 计算 2 的前 50 次方和 1到50的平方。这两个序列有那几个元素相等?
twoexp=1:50
numsqr=1:50
for(i in 1:50) {twoexp[i]=2^i}
for (j in 1:50) {numsqr[j]=j^2}
c=0
print(numsqr)
for(i in 1:50){
for(j in 1:50)
{if(twoexp[i]==numsqr[j]){
print(c(i,j,twoexp[i]))
}}}
[1] 2 2 4
[1] 4 4 16
[1] 6 8 64
[1] 8 16 256
[1] 10 32 1024
4 读入数据 country.frame 。这是欧洲4个国家的数据。其中 GDP 代表国内生产总值, Pop 代表人口, Inflation 为 2000年的消费者物价增长指数,area 为面积, EU 代表该国家是否是为欧盟成员国。请完成下列任务:
(a) 计算人均国内生产总值并将其加入到 country.frame 中;
(b) 那个国家拥有最高的人均国内生产总值?
(c) 以变量人均 GDP 将 country.frame 排序。
5 请问 1:7 * 1:2 的结果是什么?你能解释吗?
6 请将一个数值型向量在3的倍数的位置上的元素变为这个元素的负值。
因子:
- 分为:名义型,有序型,连续型
即:nominal, ordinal, continuous
- 名义型:type1&type2; 有序型(顺序关系而非数量关系):poor, improved, excellent; 连续型:年龄
- diabetes <- c("Type1", "Type2", "Type1", "Type1")
1=Type1和2=Type2(具体赋值根据字母顺序而定)。- - 针对向量diabetes进行的任何分析都会将其作为名义型变量对待,并自动选择适合这一测量尺度的统计方法。 - 要表示有序型变量,需要为函数factor()指定参数ordered=TRUE。给定向量: status <- c("Poor", "Improved", "Excellent", "Poor") 语句
status <- factor(status, ordered=TRUE)
会将向量编码为(3, 2, 1, 3),并在内部 将这些值关联为1=Excellent、2=Improved以及3=Poor。(按首字母顺序排序)
-可以用指定levels来覆盖默认排序:
status <- factor(status, order=TRUE, levels=c("Poor", "Improved", "Excellent"))
其它小笔记
- 想知道vector里面有多少个element:
> str(a)
num [1:8] 7.3 6.8 0.005 9 12 2.4 18.9 0.9
- 想取出data.frame中的某一列: