注: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')