zoukankan      html  css  js  c++  java
  • R语言学习——数据框

    > #数据框可以包含不同模式(数值型、字符型、逻辑型等)的数据,是R中最常处理的数据结构。数据框可以通过函数data.frame()创建:mydata<-data.frame(coll,col2,col3,...)
    > #其中的列向量col1、col2、col3等可以为任何类型(如数值型、字符型或者逻辑型)每一列的名称可由函数names指定。实例如下:
    > #创建一个数据框
    > patientID<-c(1,2,3,4)
    > age<-c(25,34,28,52)
    > diabetes<-c("Type1","Type2","Type1","Type1")
    > status<-c("Poor","Improved","Excellent","Poor")
    > patientdata<-data.frame(patientID,age,diabetes,status)#创建数据框patientdata
    > patientdata
    patientID age diabetes status
    1 1 25 Type1 Poor
    2 2 34 Type2 Improved
    3 3 28 Type1 Excellent
    4 4 52 Type1 Poor

    > #每一列数据的模必须唯一,可以将多个模式的不同列放到一起组成数据框。、
    > #选取数据框中元素的方式有若干种,可以使用下标记号,也可直接指定列名。实例如下:
    > patientdata[1:2]#选取第1、2列数据
    patientID age
    1 1 25
    2 2 34
    3 3 28
    4 4 52
    > patientdata[c("diabetes","status")]
    diabetes status
    1 Type1 Poor
    2 Type2 Improved
    3 Type1 Excellent
    4 Type1 Poor
    > patientdata[2:3,1:2]#选取第2、3行,第1、2列的数据
    patientID age
    2 2 34
    3 3 28
    > patientdata$age#记号$用来选取一个给定数据框中的某一特定变量
    [1] 25 34 28 52
    > #例如,如果想生成糖尿病类型变量diabetes和病情变量status的列联表,可使用如下代码:
    > table(patientdata$diabetes,patientdata$status)
    Excellent Improved Poor
    Type1 1 0 2
    Type2 0 1 0

    > #每个变量前都键入patientdata$可能会比较麻烦,联合使用函数attach()和detach()或单独使用函数with()可以简化代码。函数attach()可将数据框添加到R的搜索路径中。R遇到一个变量名后,将检查搜索路径中的数据框。上述例子也可使用如下代码实现:

    > attach(patientdata)

    > table(diabetes,status)

    > #以数据框mtcars为例

    > summary(mtcars$mpg)#获取每加仑行驶英里数(mpg)变量的描述性统计量
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90
    > plot(mtcars$mpg,mtcars$disp)#每加仑行驶英里数(mpg)与发动机排量(disp)的散点图

    > plot(mtcars$mpg,mtcars$wt)#每加仑行驶英里数(mpg)与车身重量(wt)的散点图

    > #以上代码也可以写成如下形式:
    > attach(mtcars)#将数据框mtcars添加到R的搜索路径
    > summary(mpg)
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90
    > plot(mpg,disp)

    > plot(mpg,wt)

    > detach(mtcars)#将数据框mtcars从R的搜索路径中移除
    > #需要注意的是当数据框被绑定(attach)前,环境中已经存在了相同的变量时该方法便会有很明显的局限性,例如:
    > mpg<-c(25,36,47)
    > attach(mtcars)
    The following object is masked _by_ .GlobalEnv:

    mpg

    > plot(mpg,wt)
    Error in xy.coords(x, y, xlabel, ylabel, log) :
    'x' and 'y' lengths differ
    > mpg
    [1] 25 36 47
    > #因为这种情况下原始对象获得优先权,因此attach()和detach()最好在分析一个单独的数据框,并且不太可能有多个同名对象时使用,任何情况下都应该当心那些告知某个对象已被屏蔽(masked)的警告
    > #而with()函数无需担心名称冲突

    > with(mtcars,{print(summary(mpg))})
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90

    > with(mtcars,{print(summary(mpg))
    + plot(mpg,disp)
    + plot(mpg,wt)})
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90

     

    > #使用with(vector,{})时,花括号{}中的语句都是针对所载入的数据框(上述例子为数据框mtcars)执行,因此无需担心名称冲突,如果仅有一条语句(例如summary(mpg)),那么花括号{}也可以省略。但with()函数也有局限性,即赋值仅在次函数的括号内生效。如下代码:
    > with(mtcars,{
    + stats<-summary(mpg)
    + stats})
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90
    > stats
    Error: object 'stats' not found

    > #那么怎么在with()中创建with()结构以外存在的对象呢,其实,使用特殊赋值符<<-替代标准赋值符<-即可,它可以将对象保存到with()之外的全局环境中。如下代码:
    > with(mtcars,{
    + nokeepstats<-summary(mpg)
    + keepstats<<-summary(mpg)
    + nokeepstats
    + keepstats
    + })
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90
    > nokeepstats
    Error: object 'nokeepstats' not found
    > keepstats
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90
    > with(mtcars,{
    + nokeepstats<-summary(mpg)
    + keepstats<<-summary(mpg)
    + nokeepstats
    + })
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90
    > with(mtcars,{
    + nokeepstats<-summary(mpg)
    + keepstats<<-summary(mpg)
    + keepstats
    + })
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    10.40 15.43 19.20 20.09 22.80 33.90

  • 相关阅读:
    xtrabackup详细用法
    CentOS国内YUM源及配置
    CentOS7系统配置国内yum源和epel源
    Zabbix的定期备份
    Zabbix的邮件告警
    石头剪刀布---组合数取模,数论
    组合数取模介绍----Lucas定理介绍
    乘法逆元
    费马小定理
    欧几里德与扩展欧几里德算法----数论
  • 原文地址:https://www.cnblogs.com/caicai2019/p/10445798.html
Copyright © 2011-2022 走看看