R 数据框

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

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

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

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

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数据

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

姓名工号月薪1张三00110002李四0022000

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

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

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

'data.frame':2obs.of3variables:$姓名:chr"张三""李四"$工号:chr"001""002"$月薪:num10002000

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

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

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

姓名工号月薪Length:2Length:2Min.:1000Class:characterClass:character1stQu.:1250Mode:characterMode:characterMedian:1500Mean:15003rdQu.:1750Max.:2000

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

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

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

table.姓名table.月薪1张三10002李四2000

以下形式显示前面两行:

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

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

姓名工号月薪1张三00110002李四00220003王五0033000[1]"---输出前面两行----"姓名工号月薪1张三00110002李四0022000

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

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)

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

姓名工号2李四0023王五003

扩展数据框

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

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

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

姓名工号月薪部门1张三0011000运营2李四0022000技术3王五0033000编辑

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

#创建向量sites<-c("Google","Nhooo","Taobao")likes<-c(222,111,123)url<-c("www.google.com","www.shangmayuan.com","www.taobao.com")#将向量组合成数据框addresses<-cbind(sites,likes,url)#查看数据框print(addresses)

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

siteslikesurl[1,]"Google""222""www.google.com"[2,]"Nhooo""111""www.shangmayuan.com"[3,]"Taobao""123""www.taobao.com"

如果要对两个数据框进行合并可以使用 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)

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

姓名工号月薪1张三00110002李四00220003王五00330004小明10150005小白1027000
编辑于2024-05-20 15:23