R语言编程艺术学习笔记——第五章数据框

   距离上一次分享又过了一段时间,要坚持真的不容易,所以自律真的是人身上非常重要的品质。继续捡回R语言编程艺术系列,这真的是一本不错的R语言经典书籍,有很多细节值得细细思考。话不多说,开始第五章数据框的笔记。

1.数据框的创建

data.frame()用来创建数据框,函数包含参数如下:

data.frame(..., row.names = NULL, check.rows = FALSE,check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = default.stringsAsFactors()),...代表数据框的数据源,默认行名称为空,默认字符串作为因子,实际上字符串更多作为向量,因此在建立数据框时,应该使用stringAsFactors=FALSE,举个例子:

> employee<-c("Tom","Jack","Judy")
> salary<-c(3000,6000,5000)
> staff<-data.frame(employee,salary,stringsAsFactors =FALSE)
> staff
  employee salary
1      Tom   3000
2     Jack   6000
3     Judy   5000

2.数据框的访问

1)通过索引,比如要访问第一列数据,可以是:staff[[1]],或者staff[,1];

2)通过组件名,staff$employee,第二种方法用$最为简单直接

3.提取子数据框

两种方法:

1)按行或者列进行提取,通过使用[ ],完成操作“,”前面指操作行,后面指操作列

> staff[1,]
  employee salary
1      Tom   3000

2)使用subset()函数,subset函数第一个参数指数据框,第二参数指需要筛选的条件

> subset(staff,staff$salary>3000)
  employee salary
2     Jack   6000
3     Judy   5000

4.数据框合并

rbind()指按行合并,cbind()指按列合并,但是有条件,要求合并的两个数据框必须有相同的行或者列。

> rbind(staff,list("Lucy",9000))
  employee salary
1      Tom   3000
2     Jack   6000
3     Judy   5000
4     Lucy   9000

利用$,增加数据会变得更加简单

> staff
  employee salary
1      Tom   3000
2     Jack   6000
3     Judy   5000
> staff$age<-c(23,27,31)
> staff
  employee salary age
1      Tom   3000  23
2     Jack   6000  27
3     Judy   5000  31

merge()是指根据某个条件合并数据框,并且会剔除重复项,比rbind和cbind稍微灵活点

> employee<-c("Alice","Tom")
>      salary<-c(6500,3000)
>          staff2<-data.frame(employee,salary,stringsAsFactors = FALSE)
> staff2
  employee salary
1    Alice   6500
2      Tom   3000
> staff3<-merge(staff,staff2)
> staff3
  employee salary age
1      Tom   3000  23
> staff3<-merge(staff,staff2,all=T)
> staff3
  employee salary age
1    Alice   6500  NA
2     Jack   6000  27
3     Judy   5000  31
4      Tom   3000  23

上面列举了一个情况,当默认使用merge()函数时,相当于取了两个数据框的并集,因此例子中第一次合并只有一条数据,当设置all=T时,表示剔除重复项并且保留其他行数据,这里注意根据需求在处理时设置正确的用法。

5.数据框的函数应用

lapply()函数和sapply()函数,注意这两个函数均作用于列。

lapply(X, FUN, ...)   表示对数据框应用某个函数,会对数据框中的每一列都应用,最后输出列表

sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE) 表示对数据框应用某个函数,会对数据框的每一列进行应用,并且可以将结果以列表、向量、矩阵或者多维矩阵的形式输出,sapply与lapply相比强调更多简单形式的输出结果,如下所示:

> d1<-lapply(staff2,sort)
> d1
$`employee`
[1] "Alice" "Tom"  

$salary
[1] 3000 6500

> d1<-sapply(staff2,sort)
> d1
     employee salary
[1,] "Alice"  "3000"
[2,] "Tom"    "6500"

第五章数据框的基础就是这么多,第六章因子和表再见!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据蜂鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值