R 语言学习教程,从入门到醒目,R 数据框(14)

打印 上一主题 下一主题

主题 1317|帖子 1317|积分 3951

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、R 数据框

数据框(Data frame)可以理解成我们常说的"表格"。
数据框是 R 语言的数据布局,是特别的二维列表。
数据框每一列都有一个唯一的列名,长度都是相称的,同一列的数据类型需要一致,差别列的数据类型可以不一样。
R 语言数据框使用 data.frame() 函数来创建,语法格式如下:
  1. data.frame(…, row.names = NULL, check.rows = FALSE,
  2.            check.names = TRUE, fix.empty.names = TRUE,
  3.            stringsAsFactors = default.stringsAsFactors())
复制代码
…: 列向量,可以是任何类型(字符型、数值型、逻辑型),一般以 tag = value 的形式表示,也可以是 value。
row.names: 行名,默认为 NULL,可以设置为单个数字、字符串或字符串和数字的向量。
check.rows: 检测行的名称和长度是否一致。
check.names: 检测数据框的变量名是否合法。
fix.empty.names: 设置未定名的参数是否主动设置名字。
stringsAsFactors: 布尔值,字符是否转换为因子,factory-fresh 的默认值是 TRUE,可以通过设置选项(stringsAsFactors=FALSE)来修改。
以下创建一个简朴的数据框,包罗姓名、工号、月薪:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四"),
  3.     工号 = c("001","002"),
  4.     月薪 = c(1000, 2000)
  5. )
  6. print(table) # 查看 table 数据
复制代码
执行以上代码输出结果为:
  1. 姓名 工号 月薪
  2. 1 张三  001 1000
  3. 2 李四  002 2000
复制代码
数据框的数据布局可以通过 str() 函数来展示:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四"),
  3.     工号 = c("001","002"),
  4.     月薪 = c(1000, 2000)
  5. )
  6. # 获取数据结构
  7. str(table)
复制代码
执行以上代码输出结果为:
  1. 'data.frame':   2 obs. of  3 variables:
  2. $ 姓名: chr  "张三" "李四"
  3. $ 工号: chr  "001" "002"
  4. $ 月薪: num  1000 2000
复制代码
summary() 可以体现数据框的概要信息:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四"),
  3.     工号 = c("001","002"),
  4.     月薪 = c(1000, 2000)
  5.    
  6. )
  7. # 显示概要
  8. print(summary(table))
复制代码
执行以上代码输出结果为:
  1. 姓名               工号                月薪     
  2. Length:2           Length:2           Min.   :1000  
  3. Class :character   Class :character   1st Qu.:1250  
  4. Mode  :character   Mode  :character   Median :1500  
  5.                                       Mean   :1500  
  6.                                       3rd Qu.:1750  
  7.                                       Max.   :2000
复制代码
我们也可以提取指定的列:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四"),
  3.     工号 = c("001","002"),
  4.     月薪 = c(1000, 2000)
  5. )
  6. # 提取指定的列
  7. result <- data.frame(table$姓名,table$月薪)
  8. print(result)
复制代码
执行以上代码输出结果为:
  1. table.姓名 table.月薪
  2. 1       张三       1000
  3. 2       李四       2000
复制代码
以下形式体现前面两行:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四","王五"),
  3.     工号 = c("001","002","003"),
  4.     月薪 = c(1000, 2000,3000)
  5. )
  6. print(table)
  7. # 提取前面两行
  8. print("---输出前面两行----")
  9. result <- table[1:2,]
  10. print(result)
复制代码
执行以上代码输出结果为:
  1. 姓名 工号 月薪
  2. 1 张三  001 1000
  3. 2 李四  002 2000
  4. 3 王五  003 3000[1] "---输出前面两行----"  姓名 工号 月薪
  5. 1 张三  001 1000
  6. 2 李四  002 2000
复制代码
我们可以通过类似坐标的形式读取指定行的某一列的数据,以下我们读取第 2 、3 行的第 1 、2 列数据:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四","王五"),
  3.     工号 = c("001","002","003"),
  4.     月薪 = c(1000, 2000,3000)
  5. )
  6. # 读取第 2 、3 行的第 1 、2 列数据:
  7. result <- table[c(2,3),c(1,2)]
  8. print(result)
复制代码
执行以上代码输出结果为:
  1. 姓名 工号
  2. 2 李四  002
  3. 3 王五  003
复制代码
扩展数据框
我们可以对已有的数据框进行扩展,以下示例我们添加部门列:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四","王五"),
  3.     工号 = c("001","002","003"),
  4.     月薪 = c(1000, 2000,3000)
  5. )
  6. # 添加部门列
  7. table$部门 <- c("运营","技术","编辑")
  8. print(table)
复制代码
执行以上代码输出结果为:
  1. 姓名 工号 月薪 部门
  2. 1 张三  001 1000 运营
  3. 2 李四  002 2000 技术
  4. 3 王五  003 3000 编辑
复制代码
我们可以使用 cbind() 函数将多个向量合成一个数据框:
  1. # 创建向量
  2. sites <- c("Google","Nhooo","Taobao")
  3. likes <- c(222,111,123)
  4. url <- c("www.google.com","www.cainiaojc.com","www.taobao.com")
  5. # 将向量组合成数据框
  6. addresses <- cbind(sites,likes,url)
  7. # 查看数据框
  8. print(addresses)
复制代码
执行以上代码输出结果为:
  1.     sites    likes url            
  2. [1,] "Google" "222" "www.google.com"
  3. [2,] "Nhooo" "111" "www.cainiaojc.com"
  4. [3,] "Taobao" "123" "www.taobao.com"
复制代码
如果要对两个数据框进行归并可以使用 rbind() 函数:
  1. table = data.frame(
  2.     姓名 = c("张三", "李四","王五"),
  3.     工号 = c("001","002","003"),
  4.     月薪 = c(1000, 2000,3000)
  5. )
  6. newtable = data.frame(
  7.     姓名 = c("小明", "小白"),
  8.     工号 = c("101","102"),
  9.     月薪 = c(5000, 7000)
  10. )
  11. # 合并两个数据框
  12. result <- rbind(table,newtable)
  13. print(result)
复制代码
执行以上代码输出结果为:
  1. 姓名 工号 月薪
  2. 1 张三  001 1000
  3. 2 李四  002 2000
  4. 3 王五  003 30004 小明  101 50005 小白  102 7000
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

星球的眼睛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表