R tips

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)

选cases

#《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")

subset()函数:同时 选变量 & 选cases

#《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()

你可能感兴趣的:(R tips)