R语言入门,我主要参考了两本书:《R语言实战》和《R数据科学》。
以下是总结日常中常常用到的一些功能在两本书中的不同方法。
xxxs: 正在使用的一个完整的 data.frame
从 xxxs 数据框中,挑选出【id, province, score】这3个变量,生成新的数据框。
#《R语言实战》
myvars <- c("id", "province", "score")
newdata <- xxxs[myvars]
#《R数据科学》
library(dplyr)
select(xxxs, id, province, score)
#《R语言实战》
newdata <- leadership[which(leadership$gender == "M" & leadership$age > 25), ]
attach(leadership)
newdata <- leadership[which(gender == "M" & age > 25), ]
detach(leadership)
#《R数据科学》
filter(data, gender == "1")
#《R语言实战》
newdata <- subset(leadership, age >= 35 | age <24, select = c(q1, q2, q3))
newdata <- subset(leadership, gender == "M" & age > 25, select = gender : q4)
1. 删除有缺失数据的行
删除所有含有缺失数据的观测(称为行删除,listwise deletion)
newdata <- na.omit(xxxs)
# 筛选出 bakeoff 数据集中 showstopper 变量不是缺失的cases
bakeoff %>%
filter(!is.na(showstopper))
2. 计算时缺失值的处理
使用参数 na.rm = TRUE
《R数据科学》
聚合函数遵循缺失值的一般规则:如果输入中有缺失值,那么输出也会是缺失值。
3. 用缺失值代替异常值
《R数据科学》
ifelse() 函数有3 个参数。第一个参数test 应该是一个逻辑向量,如果test 为TRUE,函数结果就是第二个参数yes 的值;如果test 为FALSE,函数结果就是第三个参数no 的值。
#《R数据科学》
ifelse(test, yes, no)
mutate(y = ifelse(y < 3 | y > 20, NA, y)) # example
#《R语言实战》
xxxs$age[xxxs$age == 99] <- NA
变量重编码函数:
car包中的recode()函数
doBy包recodevar()函数
R中也自带了cut(),可将一个数值型变量按值域切割为多个区间,并返回一个因子
4. 筛选无效被试(无效被试标准可以自己设定)
忘记在哪里看到的代码了。
下面这个例子里面有 6个cases, 5个变量(1个id, 4个有效变量)。
缺失数据 >= 50% 的cases 要删除。
4*50% = 2
A=data.frame(ZKR=seq(1,6),
CPIR=c(26.8,-8,7,-1,10,-15),
GY=c(2.3,1.8,1.4,1.4,1.4,1.4),
GYLJ=c(NA,NA,5.9,6.2,5.6,5.7),
GDTZ=c(5.4,NA,6.1,6.1,6.1,6.2))
B=is.na(A)
C=rowSums(B)>1 # Give the threshold value of 20%
A[!C,]
table 函数的结果如果是 factor 格式
用以下命令修改成为 numeric格式
as.character(eennum1$EEN) %>%
as.numeric()