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

1、R 数据框

数据框(Data frame)可以理解成我们常说的"表格"。

数据框是 R 语言的数据结构,是特殊的二维列表。

数据框每一列都有一个唯一的列名,长度都是相等的,同一列的数据类型需要一致,不同列的数据类型可以不一样。

R 语言数据框使用 data.frame() 函数来创建,语法格式如下:

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)来修改。

以下创建一个简单的数据框,包含姓名、工号、月薪:

r 复制代码
table = data.frame(
    姓名 = c("张三", "李四"),
    工号 = c("001","002"),
    月薪 = c(1000, 2000)
)
print(table) # 查看 table 数据

执行以上代码输出结果为:

r 复制代码
姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000

数据框的数据结构可以通过 str() 函数来展示:

r 复制代码
table = data.frame(
    姓名 = c("张三", "李四"),
    工号 = c("001","002"),
    月薪 = c(1000, 2000)
)
# 获取数据结构
str(table)

执行以上代码输出结果为:

r 复制代码
'data.frame':   2 obs. of  3 variables:
 $ 姓名: chr  "张三" "李四"
 $ 工号: chr  "001" "002"
 $ 月薪: num  1000 2000

summary() 可以显示数据框的概要信息:

r 复制代码
table = data.frame(
    姓名 = c("张三", "李四"),
    工号 = c("001","002"),
    月薪 = c(1000, 2000)
    
)
# 显示概要
print(summary(table))

执行以上代码输出结果为:

r 复制代码
姓名               工号                月薪     
Length:2           Length:2           Min.   :1000  
Class :character   Class :character   1st Qu.:1250  
Mode  :character   Mode  :character   Median :1500  
                                      Mean   :1500  
                                      3rd Qu.:1750  
                                      Max.   :2000

我们也可以提取指定的列:

r 复制代码
table = data.frame(
    姓名 = c("张三", "李四"),
    工号 = c("001","002"),
    月薪 = c(1000, 2000)
)
# 提取指定的列
result <- data.frame(table$姓名,table$月薪)
print(result)

执行以上代码输出结果为:

r 复制代码
table.姓名 table.月薪
1       张三       1000
2       李四       2000

以下形式显示前面两行:

r 复制代码
table = data.frame(
    姓名 = c("张三", "李四","王五"),
    工号 = c("001","002","003"),
    月薪 = c(1000, 2000,3000)
)
print(table)
# 提取前面两行
print("---输出前面两行----")
result <- table[1:2,]
print(result)

执行以上代码输出结果为:

r 复制代码
姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000
3 王五  003 3000
[1] "---输出前面两行----"
  姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000

我们可以通过类似坐标的形式读取指定行的某一列的数据,以下我们读取第 2 、3 行的第 1 、2 列数据:

r 复制代码
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)

执行以上代码输出结果为:

r 复制代码
姓名 工号
2 李四  002
3 王五  003

扩展数据框

我们可以对已有的数据框进行扩展,以下示例我们添加部门列:

r 复制代码
table = data.frame(
    姓名 = c("张三", "李四","王五"),
    工号 = c("001","002","003"),
    月薪 = c(1000, 2000,3000)
)
# 添加部门列
table$部门 <- c("运营","技术","编辑")

print(table)

执行以上代码输出结果为:

r 复制代码
姓名 工号 月薪 部门
1 张三  001 1000 运营
2 李四  002 2000 技术
3 王五  003 3000 编辑

我们可以使用 cbind() 函数将多个向量合成一个数据框:

r 复制代码
# 创建向量
sites <- c("Google","Nhooo","Taobao")
likes <- c(222,111,123)
url <- c("www.google.com","www.cainiaojc.com","www.taobao.com")

# 将向量组合成数据框
addresses <- cbind(sites,likes,url)

# 查看数据框
print(addresses)

执行以上代码输出结果为:

r 复制代码
    sites    likes url             
[1,] "Google" "222" "www.google.com"
[2,] "Nhooo" "111" "www.cainiaojc.com"
[3,] "Taobao" "123" "www.taobao.com"

如果要对两个数据框进行合并可以使用 rbind() 函数:

r 复制代码
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 复制代码
姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000
3 王五  003 3000
4 小明  101 5000
5 小白  102 7000
相关推荐
千澜空3 分钟前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
霍格沃兹测试开发学社测试人社区4 分钟前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
理想不理想v8 分钟前
vue经典前端面试题
前端·javascript·vue.js
不收藏找不到我9 分钟前
浏览器交互事件汇总
前端·交互
斯凯利.瑞恩10 分钟前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
WeeJot嵌入式11 分钟前
大数据治理:确保数据的可持续性和价值
大数据
今天我又学废了20 分钟前
Scala学习记录,List
学习
YBN娜22 分钟前
Vue实现登录功能
前端·javascript·vue.js
阳光开朗大男孩 = ̄ω ̄=23 分钟前
CSS——选择器、PxCook软件、盒子模型
前端·javascript·css
杨荧25 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka