R语言(5):数据框

数据框类似矩阵,但是不同的列可以有不同的模式(mode)。正如列表可以类比一维向量,儿数据框可以类比二维数据的矩阵

5.1 创建数据库

kids <- c("jack","jill")
ages <- c(12,10)
d <- data.frame(kids,ages,stringsAsFactors = FALSE) #方法1
d

d <- data.frame(list(gender = c("M","F","M","F","F"),age = c(47,21,20,32,33),income = c(55000,88000,32450,76500,12300))) #方法2

结果:

5.1.1 数据框的索引

数据框是列表的扩展,访问的方式差不多。

其他子矩阵的操作 和矩阵一样,这里就不再赘述。注意当提取出来的子矩阵是一列时,需要设置参数:drop=FALSE 否则会得到向量而不是数据框!这里和矩阵(防止意外降维)方法也一样

d[[1]]
d$kids
d[,1]

结果:

str()函数可以查看数据框的内部结构

5.2 数据框的操作

5.2.1 数据框元素的筛选

和矩阵一样

5.2.2 缺失值的处理

一、na.rm = TRUE

x <- c(2,NA,4)
mean(x)
mean(x,na.rm = T)

结果:

二、subset()函数

不用自己设置na.rm = TRUE,可以应用在数据框中用于选择行

kids <- c("jack","jill",'Amy')
ages <- c(12,10,NA)
d <- data.frame(kids,ages,stringsAsFactors = FALSE)
z <- subset(d,ages>10)
z

 三、complete.cases()函数

直接把数据框中的缺失值去掉了

kids <- c("jack","jill",'Amy')
ages <- c(12,10,NA)
d <- data.frame(kids,ages,stringsAsFactors = FALSE)
d5 <- d[complete.cases(d),]
d5

结果: 

5.2.3 使用rbind()和cbind()等函数

和矩阵一样!

5.2.4 使用apply()函数

5.3 合并数据框

5.3.1 merge(x,y)

合并两个数据框

kids <- c("Jack","Jill","Jillian","Jhon")
states <- c("CA","MA","MA","HI")
d1 <- data.frame(kids,states,stringsAsFactors = FALSE)
d1
kids <- c("Jack","Jill","Jillian","Jhon")
ages <- c(1,2,3,4)
d2 <- data.frame(kids,ages,stringsAsFactors = FALSE)
m <- merge(d1,d2)
m

注意:会丢到有空值的:

kids <- c("Jack","Jill","Jillian","Jhon","cc")
states <- c("CA","MA","MA","HI","HI")
d1 <- data.frame(kids,states,stringsAsFactors = FALSE)
d1
kids <- c("Jack","Jill","Jillian","Jhon","Amy")
ages <- c(1,2,3,4,5)
d2 <- data.frame(kids,ages,stringsAsFactors = FALSE)
m <- merge(d1,d2)
m

结果:

5.4 应用于数据框的函数

lapply和sapply

lapply作用在数据框中的每一列,然会返回值存储在列表中

 sapply返回向量,这和列表是一样的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值