第4章 基本数据管理

注:R语言的再复习之路

1. 创建新变量

mydata <- transform(mydata, sumx = x1 + x2, meanx = (x1 + x2) / 2)

2. 变量的重编码

leadership <- within(leadership, {
                     agecat <- NA,
                     agecat[age > 75] <- 'Elder'
                     agecat[age >= 55 & age <= 75] <- 'Middle Aged'
                     agecat[age < 55] <- 'Young'})

注:这里首先需要创建变量agecat,并且将每一行都设为缺失值

4. 变量的重命名

#格式
rename(dataframe, c(oldname = 'newname', oldname = 'newname', ...))

#例子
library(plyr)
leadership <- rename(leadership, c(manage = 'manageID', date = 'testDate'))

5. 缺失值

  • 注意,检验是否为缺失值绝对不能用myvar == NA这样来检查,这样得到的结果永远是NA,而不会是TRUE或FALSE。检验对象是否含有缺失值用函数is.na()
  • 一般用na.rm = TRUE选项在数值函数里面剔除缺失值,而用na.omit()函数在数据框里删除含有缺失值的观测。
y <- sum(x, na.rm = TRUE)
newdata <- na.omit(leadership)

6. 日期值

  • 写入日期值,用as.Date(x, input_format)函数,其中x为字符型数据,input_format给出用于读入日期的格式
  • 输出日期值,用format(x, format = 'output_format')函数,其中output_format同样为导出的日期格式
#导入数据
strdates <- c('01/05/1965', '08/16/1975')
dates <- as.Date(strdates, '%m/%d/%Y')

#输出数据
today <- Sys.Date()
format(today, '%B %d %Y')

7. 数据排序

order(label1, label2, ...)函数

8. 数据集的合并

  • 合并列:merge()函数,cbind()函数,transform()函数
  • 合并行:rbind()函数

9. 数据集选取子集

#丢弃变量
#例1
myvars <- names(leadership) %in% c('q3', 'q4')
newdata <- leadership[!myvars]
#例2
leadership$q3 <- leadership$q4 <- NULL
#例3
newdata <- subset(leadership, select = -c('q3', 'q4'))

#subset()函数
newdata <- subset(leadership, age >= 35 | age < 24, select = c(q1, q2, q3, q4))
newdata <- subset(leadership, gender == 'M' & age > 25, select = gender:q4)

#随机抽样
mysample <- leadership[sample(1:nrow(leadership), 3, replace = FALSE), ]

10. 使用SQL语句操作数据框

library(sqldf)
newdf <- sqldf('select * from mtcars where carb = 1 order by mpg', row.names = TRUE)
newdf <- sqldf('select avg(mpg) as avg_mpg, avg(disp) as avg_disp, gear from mtcars where cyl in (4, 6) group by gear')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值