zoukankan      html  css  js  c++  java
  • R语言学习笔记——数据结构 & 数据框基本操作

    参考书籍:R语言实战

    数据结构:

    1. 向量 : 用于存储数值型、字符型或逻辑型数据的一维数组
      1.1 创建 : a <- c(1, 2, 3, 4)

      1.2 访问 : a[1] : 1

           a[c(2, 4)] : 2 4 (向量a中的第二个和第四个元素)

           a[1:4] : 1 2 3 4 (向量a中的第一个直到第四个元素)

      1.3 注意 : 

          1)  单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)
          2) 标量是只含一个元素的向量,例如f <- 3 、 g <- "US" 和h <- TRUE。它们用于保存常量

    2. 矩阵 : 矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)

      2.1 创建 : mymatrix <- matrix(vector, nrow=number_of_row, ncol=number_of_col, byrow=logical_value, dimnames=list(char_vector_rownames,                   char_vector_colnames))

           其中vector包含了矩阵的元素, nrow和ncol用以指定行和列的维数, dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按
           行填充( byrow=TRUE)还是按列填充( byrow=FALSE),默认情况下按列填充

             

                      

      2.2 访问 : 

            

      2.3 注意 : 

          1)  矩阵都是二维的,和向量类似,矩阵中也仅能包含一种数据类型。当维度超过2时,不妨使用数组。当有多种模式的数据时,不妨使用数据框

    3. 数组 : 数组( array)与矩阵类似,但是维度可以大于2
      3.1 创建 : myarray <- array(vector, dimensions, dimnames)

        其中vector包含了数组中的数据, dimensions是一个数值型向量,给出了各个维度下标的最大值,而 dimnames 是可选的、各维度名称标签的列表

        

      3.2 访问 : 从数组中选取元素的方式与矩阵相同。上例中,元素z[1,2,3] 为15

      3.3 注意 :

          1) 数组中的数据也只能拥有一种模式

      

    4. 数据框 : 由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更为一般。
      4.1 创建 : data.frame(col1, col2, col3 , ...)
          

      4.2 访问 :  $ 

            

        为避免过多使用$,可用attach(),detach()和with()/within()来简化代码

        1) attach()和detach() : 函数attach() 可将数据框添加到R的搜索路径中, 函数detach() 将数据框从搜索路径中移除

          attach(dataframe)

          #省略$的代码

          detach(dataframe)

          缺点 : 同名对象会被屏蔽

        2) with()

          with(dataframe, 

              {

                #省略$的代码

              }

          )

          缺点 : 函数with() 的局限性在于,赋值仅在此函数的括号内生效
             如果你需要创建在with() 结构以外存在的对象,使用特殊赋值符<<-替代标准赋值符( <-)即可,它可将对象保存到with() 之外的全局环境中。

       3) within()

        within(dataframe,

          {

            #省略$的代码

          }

        )

        函数within() 与函数with() 类似,不同的是它允许你修改数据框

    5. 列表 : 列表就是一些对象(或成分,component)的有序集合
      5.1 创建 : list(name=object1, name=object2,...)

      5.2 访问 :

      5.3 注意 : 

        1) 由于两个原因,列表成为了R中的重要数据结构。首先,列表允许以一种简单的方式组织和重新调用不相干的信息。其次,许多R函数的运行结果都是以列表的形式返回的。需要取出其中哪些成分由分析人员决定。


    数据框操作 :

    1. 添加列 merge(dataframe1, datafrme2, by=c())

         cbind(df1, df2) (横向合并对象1和对象2。为了让它正常工作,每个对象必须拥有相同的行数,且要以相同顺序排序。)

    2. 添加行 rbind(df1, df2)

    3. 取子集  

      myvars <- c("q1", "q2", "q3", "q4", "q5")

      newdata <- leadership[myvars] (即选取了五列 : q1, q2, q3, q4, q5)

    4. 丢弃变量

      myvars <- names(leadership)%in%c("q3", "q4")

      newdata <- leadership[!myvars] (丢弃q3, q4列)

    5. 选入观测

      newdata <- leadership[1:3, ] (选择了第一到第三行的所有列)

      newdata <- leadership[which(leadership$gender=='M' & leadership$age > 30), ]

    6. subset()函数

      newdata <- subset(leadership, age>=35 | age < 24, select = c(q1, q2, q3, q4))

      newdata <- subset(leadership, gender == 'M' & age > 25, select=gender:q4)

  • 相关阅读:
    Object类中常见的方法,为什么wait notify会放在Object里边
    什么是Java序列化和反序列化,如何实现Java序列化
    hashCode和equals方法的区别与联系
    MVC设计思想
    dstat命令--检查linux系统性能
    linux mint19.1解决网易云音乐安装后打不开的问题
    linux 修改用户密码
    MD5加密
    xmpp
    cocoapods安装
  • 原文地址:https://www.cnblogs.com/waxblogs/p/4398278.html
Copyright © 2011-2022 走看看