美文网首页
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语言的数据类型(二)

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

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

    本文整理了菜鸟教程的R语言的数据类型基础,整理思路为一维到多维:细节请访问https://www.runoob.c...

  • OC和C中的数据类型

    数据类型对比 C语言数据类型C语言数据类型 OC数据类型

  • 02-Go语言常量和变量

    Go语言的数据类型 C语言的数据类型 Go语言的数据类型 Go语言各数据类型占用内存空间 Go语言中也可以使用si...

  • JAVA 基础

    目录:一、数据类型二、变量三、修饰符四、逻辑控制 一、数据类型 在Java语言中,数据类型分为基本数据类型(pri...

  • R语言基础--数据类型-总结

    R语言基础--数据类型-总结 1、R语言基础--数据类型之向量 2、R语言基础--数据类型之因子 3、R语言基础-...

  • 04-Go语言常量和变量

    Go数据类型 C语言的数据类型image GO语言数据类型image GO数据类型占用的内存空间image 注意点...

  • C语言从基础 -> 精通 -> 底层 (2) 基本数据类型和变量

    二.基本数据类型 C 语言包含的数据类型如下图所示: 这张图大家肯定在很多教材中都见过,它包含了C语言中涉及的全部...

  • Node.js Buffer

    JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但在处理像TCP流或文件流时,必须使用到二...

  • 08 全局-Buffer

    Node.js Buffer(缓冲区) JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但...

网友评论

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

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