R:筛选样本
来自OBHRM百科
根据条件筛选
1、直接筛选
newdata<- mydata[mydata$age>=40 & mydata$sex=="M"] # 从mydata数据框中选择所有年龄大于等于40,且性别为M(男)的样本。注意变量之前必须加上mydata$
或者
attach(mydata) newdata<- mydata[ age>=40 & sex=="M"] # 从mydata数据框中选择所有年龄大于等于40,且性别为M(男)的样本。注意这时变量之前就不需要再加mydata$ detach(mydata)
2、利用subset()函数。subset函数的具体用法可以在R控制台输入:? subset。
newdata <- subset (mydata, age>=40 & sex=="M") # 从mydata数据框中选择所有年龄大于等于40,且性别为M(男)的样本 newdata <- subset (mydata, age>=40 | sex=="M") # 从mydata数据框中选择所有年龄大于等于40,或性别为M(男)的样本
如果想删除有缺失值的样本,只留下没有缺失值的样本。
newdata <- subset (mydata, !is.na(item3)) # 从mydata数据框中删除变量item3有缺失值的样本 newdata <- subset (mydata, !is.na(mydata[,6])) # 从mydata数据框中删除第6个变量有缺失值的样本 newdata <- subset(mydata,complete.cases(mydata)) # 从mydata数据框中删除任何变量有缺失值的样本,也可以用na.omit(mydata)或者na.exclude(mydata)来完成
随机抽取
随机抽取需要使用sample()函数,sample()函数的使用方法,可以在R控制台输入:? sample,了解具体的使用方法。
如果您有一个数据框mydata,现在需要随机从里头抽取100个样本,则可以:
newdata <- mydata[sample(1:nrow(mydata), 100, replace=FALSE)]