R语言--基础(三)

作者: _凌浩雨 | 来源:发表于2018-11-22 19:22 被阅读2次
    1. 字符串
    • 连接字符串 - paste()函数
      对于粘贴功能的基本语法是 -
    paste(..., sep = " ", collapse = NULL)
    

    以下是所使用的参数的说明 -
    -- ...表示要组合的任意数量的自变量。
    -- sep表示参数之间的任何分隔符。它是可选的。
    -- collapse用于消除两个字符串之间的空格。 但不是一个字符串的两个字内的空间。

    示例:

    # 连接字符串 - paste()函数
    a <- "Hello"
    b <- 'How'
    c <- "are you? "
    
    print(paste(a,b,c))
    print(paste(a,b,c, sep = "-"))
    print(paste(a,b,c, sep = "", collapse = ""))
    

    打印结果:


    图1.png
    • 格式化数字和字符串 - format()函数
      格式化函数的基本语法是 -
    format(x, digits, nsmall, scientific, width, justify = c("left", "right", "centre", "none"))
    

    以下是所使用的参数的描述 -
    -- x是向量输入。
    -- digits是显示的总位数。
    -- nsmall是小数点右边的最小位数。
    -- scientific科学设置为TRUE以显示科学记数法。
    -- width指示通过在开始处填充空白来显示的最小宽度。
    -- justify是字符串向左,右或中心的显示。

    示例:

    # 格式化函数 - format()函数
    # 显示总位数
    result <- format(23.123456789, digits = 9)
    print(result)
    # 科学计数法显示
    result <- format(c(6, 13.14521), scientific = TRUE)
    print(result)
    # 小数右边最小位数
    result <- format(23.47, nsmall = 5)
    print(result)
    # 格式化为一个字符串
    result <- format(6)
    print(result)
    # 设置数据宽度
    result <- format(13.7, width = 6)
    print(result)
    # 设置对齐方式-左对齐
    result <- format("Hello", width = 8, justify = "l")
    print(result)
    # 设置对齐方式-居中
    result <- format("Hello", width = 8, justify = "c")
    print(result)
    

    打印结果:


    图2.png
    • 字符串中的字符数 - nchar()函数
      nchar()函数的基本语法是 -
    nchar(x)
    

    以下是所使用的参数的描述 -
    -- x是向量输入。

    示例:

    # 计算字符数-nchar()
    result <- nchar("Count the number of characters.")
    print(result)
    

    打印结果:


    图3.png
    • 更改大小写 - toupper()和tolower()函数
      toupper()和tolower()函数的基本语法是 -
    toupper(x)
    tolower(x)
    

    以下是所使用的参数的描述 -
    -- x是向量输入。
    示例:

    # 更改大小写
    # 转换大写
    result <- toupper("Changin To Upper")
    print(result)
    # 转换小写
    result <- tolower("Changin To Upper")
    print(result)
    

    打印结果:


    图4.png
    • 提取字符串的一部分 - substring()函数
      substring()函数的基本语法是 -
      substring(x,first,last)
      以下是所使用的参数的描述 -
      -- x是字符向量输入。
      -- 首先是要提取的第一个字符的位置。
      -- last是要提取的最后一个字符的位置。
      示例:
    # 截取字符串
    result <- substring("Extract", 5, 7)
    print(result)
    

    打印结果:


    图5.png
    2. 向量
    • 创建向量
    # 创建向量
    # 字符向量
    print("abc")
    # 双精度向量
    print(12.5)
    # 整型向量
    print(63L)
    # 逻辑型向量
    print(TRUE)
    # 复数向量
    print(2+3i)
    # 原型向量
    print(charToRaw('Hello'))
    

    示例:


    图6.png
    • 多元素向量
    # 多元素向量
    # 创建序列5-13
    v <- 5:13
    print(v)
    # 创建序列6.6-12.6
    v <- 6.6:12.6
    print(v)
    # 如果最后的结点是特殊的,未在序列中定义
    v <- 3.8:11.4
    print(v)
    

    打印结果:


    图7.png
    • 使用sequence (Seq.)序列运算符
    # 创建从5-9,涨幅为0.4的向量
    print(seq(5, 9, by = 0.4))
    

    打印结果:


    图8.png
    • 使用c()函数
    # 使用c函数--如果其中一个元素是字符,则非字符值被强制转换为字符类型
    s <- c('apple', 'red', 5, TRUE)
    print(s)
    

    打印结果:


    图9.png
    • 访问向量元素
    # 访问向量元素
    # 使用索引访问向量的元素。 []括号用于建立索引。 索引从位置1开始。在索引中给出负值会丢弃来自result.TRUE,FALSE或0和1的元素,也可用于索引。
    t <- c("Sun", "Mon", "Tue", "Wed", "Thurs", "Fri", "Sat")
    # 使用坐标
    v <- t[c(2, 3, 6)]
    print(v)
    # 使用逻辑值
    v <- t[c(TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE)]
    print(v)
    # 使用负数
    v <- t[c(-2,-5)]
    print(v)
    # 使用0/1
    v <- t[c(0,0,0,0,0,0,1)]
    print(v)
    

    打印结果:


    图10.png
    • 向量运算
    # 向量操作
    # 创建两个向量
    v1 <- c(3, 8, 4, 5, 0, 11)
    v2 <- c(4, 11, 0, 8, 1, 2)
    
    # 向量加法
    add.result <- v1 + v2
    print(add.result)
    
    # 向量减法
    sub.result <- v1 - v2
    print(sub.result)
    
    # 向量乘法
    multi.result <- v1 * v2
    print(multi.result)
    
    # 向量除法
    div.result <- v1 / v2 
    print(div.result)
    

    打印结果:


    图11.png
    • 向量元素回收
    # 向量元素回收
    # 如果我们对不等长的两个向量应用算术运算,则较短向量的元素被循环使用
    v1 <- c(3, 8, 4, 5, 0, 11)
    v2 <- c(4, 11)
    # v2 -> c(4, 11, 4, 11, 4, 11)
    
    add.result <- v1 + v2
    print(add.result)
    
    sub.result <- v1 - v2
    print(sub.result)
    

    打印结果:


    图12.png
    • 向量元素排序(sort()函数)
    # 向量排序
    v <- c(3, 8, 4, 5, 0, 11, -9, 304)
    
    # 排序
    sort.result <- sort(v)
    print(sort.result)
    
    # 递减排序
    revsort.result <- sort(v, decreasing = TRUE)
    print(revsort.result)
    
    # 字符排序
    v <- c("Red", "Blue", "yellow", "violet")
    sort.result <- sort(v)
    print(sort.result)
    
    # 递减排序
    revsort.result <- sort(v, decreasing = TRUE)
    print(revsort.result)
    
    图13.png
    3. 列表
    • 创建列表
    # 创建列表
    list_data <- list("Red", "Green", c(21, 32, 11), TRUE, 51.23, 119.1)
    print(list_data)
    

    打印结果:


    图14.png
    • 命名列表元素
    # 创建一个包含向量,矩阵,列表的列表
    list_data <- list(c("Jan", "Feb", "Mar"), matrix(c(3, 9, 5, 1, -2, 8), nrow = 2), list("green", 12.3))
    # 命名
    names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
    print(list_data)
    

    打印结果:


    图15.png
    • 访问列表元素
    # 创建一个包含向量,矩阵,列表的列表
    list_data <- list(c("Jan", "Feb", "Mar"), matrix(c(3, 9, 5, 1, -2, 8), nrow = 2), list("green", 12.3))
    # 命名
    names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
    # 打印第一个结点数据
    print(list_data[1])
    print("===========================")
    # 打印第三个结点数据
    print(list_data[3])
    print("===========================")
    # 使用名字访问
    print(list_data$A_Matrix)
    print("===========================")
    

    打印结果:


    图16.png
    • 操控列表元素
    # 操控列表元素
    # 创建一个包含向量,矩阵,列表的列表
    list_data <- list(c("Jan", "Feb", "Mar"), matrix(c(3, 9, 5, 1, -2, 8), nrow = 2), list("green", 12.3))
    # 命名
    names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
    # 在列表的末尾添加节点
    list_data[4] <- "New element"
    print(list_data[4])
    # 移除最后一个节点
    list_data[4] <- NULL
    print(list_data[4])
    # 更新第三个节点
    list_data[3] <- "updated element"
    print(list_data[3])
    

    打印结果:


    图17.png
    • 合并列表
    # 合并列表
    list1 <- list(1, 2, 3)
    list2 <- list("Sun", "Mon", "Tue")
    # 合并两个列表
    merged.list <- c(list1, list2)
    print(merged.list)
    

    打印结果:


    图18.png
    • 列表转换为向量
    # 列表转换为向量--unlist()函数
    list1 <- list(1:5)
    print(list1)
    list2 <- list(10:14)
    print(list2)
    # 将列表转换为向量
    v1 <- unlist(list1)
    v2 <- unlist(list2)
    
    print(v1)
    print(v2)
    # 计算和
    result <- v1 + v2
    print(result)
    

    打印结果:


    图19.png
    4. 矩阵
    • 语法
      在R语言中创建矩阵的基本语法是 -
    matrix(data, nrow, ncol, byrow, dimnames)
    

    以下是所使用的参数的说明 -
    -- 数据是成为矩阵的数据元素的输入向量。
    -- nrow是要创建的行数。
    -- ncol是要创建的列数。
    -- byrow是一个逻辑线索。 如果为TRUE,则输入向量元素按行排列。
    -- dimname是分配给行和列的名称。

    示例:

    # 创建矩阵
    # 按行排列
    M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
    print(M)
    # 按列排列
    M <- matrix(c(3:14), nrow = 4, byrow = FALSE)
    print(M)
    # 定义行和列的名字
    rowName = c("row1", "row2", "row3", "row4")
    colName = c("col1", "col2", "col3")
    P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rowName, colName))
    print(P)
    

    打印结果:


    图20.png
    • 访问矩阵的元素
    # 访问矩阵元素
    rowName = c("row1", "row2", "row3", "row4")
    colName = c("col1", "col2", "col3")
    P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rowName, colName))
    
    # 打印第一行第三列
    print(P[1, 3])
    # 打印第四行第二列
    print(P[4, 2])
    # 仅打印第二行
    print(P[2, ])
    # 打印第三列
    print(P[ , 3])
    

    打印结果:


    图21.png
    • 矩阵加法和减法
    # 矩阵加法和减法
    matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
    print(matrix1)
    matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
    print(matrix2)
    
    # 矩阵加法
    result <- matrix1 + matrix2
    cat("Result of addition","
    ")
    print(result)
    
    # 矩阵减法
    result <- matrix1 - matrix2
    cat("Result of subtraction","
    ")
    print(result)
    

    打印结果:


    图22.png
    • 矩阵乘法和除法
    # 矩阵乘法和除法
    matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
    print(matrix1)
    matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
    print(matrix2)
    
    # 矩阵乘法
    result <- matrix1 * matrix2
    cat("Result of multiplicaion","
    ")
    print(result)
    
    # 矩阵除法
    result <- matrix1 / matrix2
    cat("Result of division","
    ")
    print(result)
    

    打印结果:


    图23.png
    5. 数组
    • 创建数组
    # 创建数组
    vector1 <- c(5, 9, 3)
    vector2 <- c(10, 11, 12, 13, 14, 15)
    
    # 将向量输入到数组中,c(3, 3, 2),它创建2个矩形矩阵,每个矩阵具有3行和3列。 数组只能存储数据类型。
    result <- array(c(vector1, vector2), dim = c(3, 3, 2))
    print(result)
    

    打印结果:


    图24.png
    • 命名行和列
    # 命名行和列
    vector1 <- c(5, 9, 3)
    vector2 <- c(10, 11, 12, 13, 14, 15)
    # 命名
    column.names <- c("COL1", "COL2", "COL3")
    row.names <- c("ROW1", "ROW2", "ROW3")
    matrix.names <- c("Matrix1", "Matrix2")
    
    result <- array(c(vector1, vector2), dim = c(3, 3, 2), dimnames = list(row.names, column.names, matrix.names))
    print(result)
    

    打印结果:


    图25.png
    • 访问数组元素
    # 访问数组元素
    vector1 <- c(5, 9, 3)
    vector2 <- c(10, 11, 12, 13, 14, 15)
    # 命名
    column.names <- c("COL1", "COL2", "COL3")
    row.names <- c("ROW1", "ROW2", "ROW3")
    matrix.names <- c("Matrix1", "Matrix2")
    
    result <- array(c(vector1, vector2), dim = c(3, 3, 2), dimnames = list(row.names, column.names, matrix.names))
    
    # 打印第二个矩阵第三行
    print(result[3, , 2])
    # 打印第一个矩阵第一行第三个数据
    print(result[1, 3, 1])
    # 打印第二个矩阵
    print(result[, , 2])
    

    打印结果:


    图26.png
    • 操作数组元素
    # 操作数组元素
    vector1 <- c(5, 9, 3)
    vector2 <- c(10, 11, 12, 13, 14, 15)
    
    array1 <- array(c(vector1, vector2), dim = c(3, 3, 2))
    print(array1)
    print("============================")
    vector3 <- c(9, 1, 0)
    vector4 <- c(6, 0, 11, 3, 14, 1, 2, 6, 9)
    array2 <- array(c(vector3, vector4), dim = c(3, 3, 2))
    print(array2)
    print("============================")
    matrix1 <- array1[, , 2]
    matrix2 <- array2[, , 2]
    result <- matrix1 + matrix2
    print(result)
    

    打印结果:


    图27.png
    • 跨数组元素的计算--apply()
      语法
    apply(x, margin, fun)
    

    以下是所使用的参数的说明 -
    -- x是一个数组。
    -- margin是所使用的数据集的名称。
    -- fun是要应用于数组元素的函数。

    示例:

    # 跨数组元素的计算
    vector1 <- c(5, 9, 3)
    vector2 <- c(10, 11, 12, 13, 14, 15)
    
    new.array <- array(c(vector1, vector2), dim = c(3, 3, 2))
    print(new.array)
    
    # 其中c(1)代表行相加,c(2)代表列相加,c(3)代表矩阵和
    result <- apply(new.array, c(1), sum)
    print(result)
    

    打印结果:


    图28.png
    6. 因子
    • 获取因子
    # 创建向量
    data <- c("East", "West", "East", "North", "North", "East", "West", "West", "West", "East", "North")
    print(data)
    # 打印是否为因子
    print(is.factor(data))
    
    # 创建因子
    factor_data <- factor(data)
    print(factor_data)
    # 打印是否为因子
    print(is.factor(factor_data))
    

    打印结果:


    图29.png
    • 数据帧的因子
    # 为数据帧创建向量
    height <- c(132, 151, 162, 139, 166, 147, 122)
    weight <- c(48, 49, 66, 53, 67, 52, 40)
    gender <- c("male", "male", "female", "female", "male", "female", "male")
    # 创建数据帧
    input_data <- data.frame(height, weight, gender)
    print(input_data)
    # 测试性别是否是因子
    print(is.factor(input_data$gender))
    # 打印性别列等级
    print(input_data$gender)
    

    打印结果:


    图30.png
    • 更改级别顺序
    # 更改级别顺序
    data <- c("East","West","East","North","North","East","West","West","West","East","North")
    # 创建因子
    factor_data <- factor(data)
    print(factor_data)
    
    # 应用因子函数,重新设置因子级别
    new_order_data <- factor(factor_data, levels = c("East", "West", "North"))
    print(new_order_data)
    

    打印结果:


    图31.png
    • 生成因子级别
      我们可以使用gl()函数生成因子级别。 它需要两个整数作为输入,指示每个级别有多少级别和多少次。
    gl(n, k, labels)
    

    以下是所使用的参数的说明 -
    -- n是给出级数的整数。
    -- k是给出复制数目的整数。
    -- labels是所得因子水平的标签向量。

    示例:

    # 生成因子级别
    v <- gl(3, 4, labels = c("Tampa", "Seattle", "Boston"))
    print(v)
    

    打印结果:


    图32.png
    7. 数据帧
    • 创建数据帧
    # 创建数据帧
    emp.data <- data.frame(
        emp_id = c(1:5),
        emp_name = c("Rick", "Dan", "Michelle", "Ryan", "Gary"),
        salary = c(623.3, 515.2, 611.0, 729.0, 843.25),
        start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")),
        stringsAsFactors = FALSE
    )
    print(emp.data)
    

    打印结果:


    图33.png
    • 获取数据帧的结构
    # 获取数据帧结构--str()
    str(emp.data)
    

    打印结果:


    图34.png
    • 数据框中的数据摘要
    # 数据框中的数据摘要
    print(summary(emp.data))
    

    打印结果:


    图35.png
    • 从数据帧提取数据
    # 从数据帧中提取数据
    result <- data.frame(emp.data$emp_name, emp.data$salary)
    print(result)
    

    打印结果:


    图36.png
    • 添加列
    # 添加列
    emp.data$dept <- c("IT", "Operations", "IT", "HR", "Finance")
    v <- emp.data
    print(v)
    

    打印结果:


    图37.png
    • 添加行
    # 添加行
    # 创建第二个数据帧
    emp.newdata <- data.frame(
        emp_id = c(6:8),
        emp_name = c("Rasmi", "Pranab", "Tusar"),
        salary = c(578.0, 722.5, 632.8),
        start_date = as.Date(c("2013-05-21","2013-07-30","2014-06-17")),
        # dept = c("IT", "Operations", "Finance"),
        stringsAsFactors = FALSE
    )
    
    emp.finaldata <- rbind(emp.data, emp.newdata)
    print(emp.finaldata)
    

    打印结果:


    图38.png

    相关文章

      网友评论

        本文标题:R语言--基础(三)

        本文链接:https://www.haomeiwen.com/subject/sgncqqtx.html