第二章:数据处理步骤

 

 

 

目录

 

3.1基本方法

3.1.1 基本函数

1.帮助函数

2.工作目录函数

3.安装及调用包

3.1.2自定义函数

3.1.3 控制语句

一、循环语句

二、分支语句

3.2 数据选择

3.2.1选取观测

一:下标法

二:$法(记号法)

三.subset法(子集法)

3.2.2 选取变量

一:下标法

二:$法(记号法)

三.attach法(数据框绑定法)

四.with法(函数法)

3.2.3 选取观测和变量

3.2.4剔除观测与变量

3.3数据转换

3.3.1修改变量名

3.3.2 创建变量

3.3.3变量转换

3.3.4 删除变量

3.3.5   重新编码

3.4 数据整理

3.4.1数据集排序

3.4.2 数据集的合并

3.4.3 缺失数据处理

一、缺失值定义

二、缺失值识别

三、缺失值排除

 


3.1基本方法

3.1.1 基本函数

1.帮助函数

help(read.csv)

2.工作目录函数

setwd(“文件地址 ”)#修改当前目录
getwd()#显示当前工作目录

3.安装及调用包

install.packages("dstat R")#安装dstat.R包
library(dstat R) 

3.1.2自定义函数

函数内的变量名是局部的,即当函数运行结束后他们不再被保存到当前的工作空间,这就可以避免许多不必要的混淆和内存空间被占用的情况。

编写函数的语法为:

函数名<-function(参数1,参数2,。。。)
{
    函数体
    函数返回值
}

1.函数名

sq.sum<-function(x){
   S=sum(x^2)
   S       #return(S)
}

注意,有别于其他语言,这里的函数参数x可以是一个数值,向量,矩阵或数据框

> sq.sum(ug$height)
[1] 1363038
> sq.sum(1:9)
[1] 285

 

2.函数参数

函数参数根据实际需要的不同而有不同的参数设置,下面将介绍三种情况

(1)无参数:有时编写参数是为了某种方便,函数每次的返回值都是一样的,其输入不是那么重要。

比如

> welcome<-function(){
+     print("welcome to R")}
> welcome
function(){
    print("welcome to R")}
> welcome()
[1] "welcome to R"

(2)单参数

> welcome<-function(names){
+     print(paste("welcome",names,"to use r"),sep=" ")
+ }
> welcome("yangfan")
[1] "welcome yangfan to use r"

(3)默认参数:指不输入任何参数

没输入参数,单参数函数welcome将返回出错信息。其实我们可以给函数设置默认,R提供了一个简单的方法允许给函数的参数设置默认值,比如:

> welcome<-function(names="yangfan"){
+     print(paste("welcome",names,"to use r"),sep=" ")
+ }
> welcome()
[1] "welcome yangfan to use r"

下面编写一个模拟函数:求均值为5,方差为2的正态分布样本数据的t统计量

> simt<-function(n){
+     mu=5;sigma=2;
+     x<-rnorm(n,mu,sigma)
+     t=(mean(x)-mu)/(sd(x)/sqrt(n))
+     t
+ }
> simt(10)
[1] 0.245389

注意,写在同一行的要用分号,而不是逗号。

补充;curve(函数表达式,from,to,)是一个画图函数。

curve(cos,0,2*pi)

4:函数体和函数返回值

如果函数要求返回的值多于一个时,就需使用列表数据类型了

例如:我们要计算学生身高的平方和sum2=\sum x^2,平方积prob2=\prod x^2,及离均差平方和Lxx=\sum (x-\bar{x})^2,函数如下。

> square<-function(x){
+     sum2=sum(x^2)
+     prob2=prod(x^2)
+     lxx=sum(x-mean(x))^2
+     list(sum2=sum2,prob2=prob2,lxx=lxx)
+     
+ }
> s=square(ug$height)
> s
$sum2
[1] 1363038

$prob2
[1] 4.040259e+213

$lxx
[1] 2.067952e-25

3.1.3 控制语句

一、循环语句

这里主要介绍for循环。for循环允许循环使用向量和数列的每一个值。

for(变量 in取值向量){
     表达式
}
> x.sum<-function(x){
+     n=length(x)
+     s=0
+     for(i in 1:n)
+         s=s+x[i]
+     s
+ }
> x.sum(1:10)
[1] 55

再举个非常有用的例子,加入要画样本含量n分别为20,30,50,100的正态随机数的分布直方图,我们可以用for循环一次完成。

> par(mfrow=c(2,2))#该命令将产生2*2个图
> for(n in c(20,30,50,100))
+     hist(rnorm(n),xlab='',main=paste('n=',n))

 

 

二、分支语句

(1)if/else 语句

if/else语句是分支语句中主要的语句,其格式为:

if(cond)statement1
if(cond)statement1 else statement2
> abs.x<-function(x){
+     if(x<0){x=-x}
+     x
+ }
> abs.x(-1)
[1] 1
> abs.x(c(-1,1))
[1]  1 -1
Warning message:
In if (x < 0) { :
  the condition has length > 1 and only the first element will be used


这是个简单的求绝对值函数,但是当x为向量时,这个函数就会出错,我们可以把这个函数修改一下,改成

> abs.x<-function(x){
+     if(x[x<0]){
+         x[x<0]=-x[x<0]
+     }
+     x
+ }
> abs.x(c(-3,3))
[1] 3 3

(2)ifelse语句

在上面的if/else语句中,R中有一个更简洁的形式来表达ifelse语句;ifelse(test,yes,n

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值