美文网首页
2021-07-08R语言的数据类型(二)

2021-07-08R语言的数据类型(二)

作者: 不学无数YD | 来源:发表于2021-07-08 11:08 被阅读0次

    本文参考菜鸟教程整理了factor() 、list()、frame()的使用:

    
    # R 因子
    # 因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人。
    # 
    # R 语言创建因子使用 factor() 函数,向量作为输入参数。
    
    # factor() 函数语法格式:
    factor(x = character(), levels, labels = levels,
           exclude = NA, ordered = is.ordered(x), nmax = NA)
    # 参数说明:
    # 
    # x:向量。
    # levels:指定各水平值, 不指定时由x的不同值来求得。
    # labels:水平的标签, 不指定时用各水平值的对应字符串。
    # exclude:排除的字符。
    # ordered:逻辑值,用于指定水平是否有序。
    # nmax:水平的上限数量。
    # 以下实例把字符型向量转换成因子:
    x <- c("男", "女", "男", "男",  "女")
    sex <- factor(x)
    print(sex)
    print(is.factor(sex))
    # 以下实例设置因子水平为 c('男','女'):
    x <- c("男", "女", "男", "男",  "女",levels=c('男','女'))
    sex <- factor(x)
    print(sex)
    print(is.factor(sex))
    # 因子水平标签
    # 接下来我们使用 labels 参数为每个因子水平添加标签,labels 参数的字符顺序,要和 levels 参数的字符顺序保持一致,例如:
    # sex=factor(c('f','m','f','f','m'),levels=c('f','m'),labels=c('female','male'),ordered=TRUE)
    # print(sex)
    # 生成因子水平
    # 我们可以使用 gl() 函数来生成因子水平,语法格式如下
    # 生成因子水平
    # 我们可以使用 gl() 函数来生成因子水平,语法格式如下
    gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE)
    # 参数说明:
    # 
    # n: 设置 level 的个数
    # k: 设置每个 level 重复的次数
    # length: 设置长度
    # labels: 设置 level 的值
    # ordered: 设置是否 level 是排列好顺序的,布尔值。
    v <- gl(3, 4, labels = c("Google", "Runoob","Taobao"))
    print(v)
    
    
    # R 语言数据框
    
    # data.frame(…, row.names = NULL, check.rows = FALSE,
                # check.names = TRUE, fix.empty.names = TRUE,
                # stringsAsFactors = default.stringsAsFactors())
    # …: 列向量,可以是任何类型(字符型、数值型、逻辑型),一般以 tag = value 的形式表示,也可以是 value。
    # row.names: 行名,默认为 NULL,可以设置为单个数字、字符串或字符串和数字的向量。
    # check.rows: 检测行的名称和长度是否一致。
    # check.names: 检测数据框的变量名是否合法。
    # fix.empty.names: 设置未命名的参数是否自动设置名字。
    # stringsAsFactors: 布尔值,字符是否转换为因子,factory-fresh 的默认值是 TRUE,可以通过设置选项(stringsAsFactors=FALSE)来修改。
    table = data.frame(
      姓名 = c("张三", "李四"),
      工号 = c("001","002"),
      月薪 = c(1000, 2000)
      
    )
    print(table) # 查看 table 数据
    # 获取数据结构
    str(table)
    # 显示概要
    print(summary(table)) 
    # 提取指定的列
    result <- data.frame(table$姓名,table$月薪)
    print(result)
    print(table)
    # 提取前面两行
    print("---输出前面两行----")
    result <- table[1:2,]
    print(result)
    
    table = data.frame(
      姓名 = c("张三", "李四","王五"),
      工号 = c("001","002","003"),
      月薪 = c(1000, 2000,3000)
    )
    # 读取第 2 、3 行的第 1 、2 列数据:
    result <- table[c(2,3),c(1,2)]
    print(result)
    # 扩展数据框
    table = data.frame(
      姓名 = c("张三", "李四","王五"),
      工号 = c("001","002","003"),
      月薪 = c(1000, 2000,3000)
    )
    # 添加部门列
    table$部门 <- c("运营","技术","编辑")
    
    print(table)
    # 我们可以使用 cbind() 函数将多个向量合成一个数据框:
    # 创建向量
    sites <- c("Google","Runoob","Taobao")
    likes <- c(222,111,123)
    url <- c("www.google.com","www.runoob.com","www.taobao.com")
    
    # 将向量组合成数据框
    addresses <- cbind(sites,likes,url)
    
    # 查看数据框
    print(addresses)
    # 如果要对两个数据框进行合并可以使用 rbind() 函数
    table = data.frame(
      姓名 = c("张三", "李四","王五"),
      工号 = c("001","002","003"),
      月薪 = c(1000, 2000,3000)
    )
    newtable = data.frame(
      姓名 = c("小明", "小白"),
      工号 = c("101","102"),
      月薪 = c(5000, 7000)
    )
    # 合并两个数据框
    result <- rbind(table,newtable)
    print(result)
    
    
    # R 列表
    # 列表是 R 语言的对象集合,可以用来保存不同类型的数据,可以是数字、字符串、向量、另一个列表等,当然还可以包含矩阵和函数。
    # 
    # R 语言创建列表使用 list() 函数。
    # 
    # 如下实例,我们创建一个列表,包含了字符串、向量和数字:
    list_data <- list("runoob", "google", c(11,22,33), 123, 51.23, 119.1)
    print(list_data)
    
    # 我们可以使用 names() 函数给列表的元素命名:
    # 列表包含向量、矩阵、列表
    list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
                      list("runoob",12.3))
    
    # 给列表元素设置名字
    names(list_data) <- c("Sites", "Numbers", "Lists")
    
    # 显示列表
    print(list_data)
    访问列表
    # 列表包含向量、矩阵、列表
    list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
                      list("runoob",12.3))
    
    # 给列表元素设置名字
    names(list_data) <- c("Sites", "Numbers", "Lists")
    
    # 显示列表
    print(list_data[1])
    
    # 访问列表的第三个元素
    print(list_data[3])
    
    # 访问第一个向量元素
    # print(list_data$Numbers)
    # 操作列表元素
    # 我们可以对列表进行添加、删除、更新的操作,如下实例:
    
    
    # 列表包含向量、矩阵、列表
    list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
                      list("runoob",12.3))
    
    # 给列表元素设置名字
    names(list_data) <- c("Sites", "Numbers", "Lists")
    
    # 添加元素
    list_data[4] <- "新元素"
    print(list_data[4])
    
    # 删除元素
    list_data[4] <- NULL
    
    # 删除后输出为 NULL
    print(list_data[4])
    
    # 更新元素
    list_data[3] <- "我替换来第三个元素"
    print(list_data[3])
    # 合并列表
    # 我们可以使用 c() 函数将多个列表合并为一个列表:
    # 创建两个列表
    list1 <- list(1,2,3)
    list2 <- list("Google","Runoob","Taobao")
    
    # 合并列表
    merged.list <- c(list1,list2)
    
    # 显示合并后的列表
    print(merged.list)
    列表转换为向量
    # 创建列表
    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)
    
    
    

    相关文章

      网友评论

          本文标题:2021-07-08R语言的数据类型(二)

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