R语言元分析专题第三章:数据导入和预处理
为了在 R 中进行元分析,你需要准备好你的研究数据(实际上任何分析都一样)。在本期的文章中,我们将介绍如何准备数据,将数据导入 R 以及对数据进行初步的预处理。
目录
1. 数据准备
2. 将数据导入R
3. 数据预处理
xls ,csv 数据文件 —— From Excel
sav 数据文件 —— From SPSS
txt 数据文件 —— From Text(readr)
点击右上角的 Browse... ,选择保存好的数据文件,即可看到数据出现在预览框中:
在预览界面可以看到变量的名称和数据类型(这个会在后面详细介绍),点击后会弹出几个选项,前三个用来改变该变量数据的类型:Character(字符型),Numeric(数值型),Data(日期型),Include 则表示该变量会被读取,Skip 表示在读取时跳过该变量,即在后续的分析过程中无需使用该变量的数据。同时在右下角可以看到相应的代码(可以忽略),我们只需要点击 Import ,数据导入就完成了:
这里我选择了跳过 Age 变量,因此读取的数据只会包含 5 个变量。
❷ 如果你已经掌握了一些基本的编程知识,你将会更喜欢第二种方法——直接写代码来导入数据(只需要一行代码,so easy ~)
setwd('D:\\桌面\\数据分析与R')
Tips:路径字符可以是 / ,也可以是 \\ ,但不能是 \ 。(就是这么不讲道理,来打我呀~)
LungCapData <- read.table('LungCapData.txt')
read.table 函数有好几种变体形式,如 read.csv 可以读取 csv 数据文件:
LungCapData <- read.csv('LungCapData.csv',header = T)
LungCap —— 肺活量,数值型数据;
Age —— 数值型数据;
Height —— 数值型数据;
Smoke —— 因子;
Gender —— 因子;
Caesrean —— 因子;
在进行正式的分析之前,我们还需要对数据做一些初步的分析,包括检查数据是否存在缺失,异常值,每个变量的数据类型是否合理以及对数据进行特定的筛选等。
3.1 缺失值分析
在进行数据分析时,往往会遇到部分数据缺失的情况,这会影响最终的分析结果,因此对数据进行缺失值分析是有必要的。
在 R 中,缺失值标记为 “NA”,而识别数据是否缺失可以使用 is.na() 函数,举例如下:
data1<-read.csv('Framingham.csv')
is.na(data1)
该函数会针对数据集的每个元素返回一个逻辑值,TRUE 表示该处数据缺失,FALSE 表示未缺失。但当数据比较多时这样看显然太不方便了,这里介绍其他几个函数:
any(is.na(data1))
这行代码可以查看整个数据是否存在缺失,只要存在缺失值(无论多少)都会返回 TRUE;
complete.cases(data1)
该函数针对数据的每一行进行检测,返回的结果表明该行数据是否完整,因此 TRUE 表示该行数据没有缺失;因为数据集很大,因此这样看还是很不方便,我们可以结合 which() 函数找出存在缺失数据的行:
此外,还可以使用 summary() 函数查看数据集的均值、分布及缺失值等概要信息。
从这里可以看出,scl 变量包含33个缺失数据,bmi变量包含9个缺失数据。
至此,我们知道了如何检查某个数据是否缺失,整个数据集是否缺失,每个个案(or 被试)以及每个变量的数据是否缺失。当缺失数据的比例较小时,我们可以考虑直接删除缺失数据,使用剩余的数据进行分析。我们同样也可以在excel中进行缺失数据检查,但当数据很大时,一行代码无疑是更加方便的方法。
3.2 数据类型转换
LungCapData$Gender <- as.factor(LungCapData$Gender)
3.3 数据筛选
同样以上面的 LungCapData为例,假如我们想选择其中的 “LungCap” 和 “Age” 两列数据进行分析,可以使用 dplyr 中的 select 函数:
也可以将筛选后的数据保存为一个新的数据集:
New_data <- select(LungCapData, LungCap, Age)
New_data <- filter(LungCapData, Gender == 'male')
(注意 R 中的等于是 “==”,而 male 是字符串,所以要加引号)
可以看到此时 Gender 变量就只剩下 male 了。同样,如果想要筛选出年龄大于10的个案:
New_data <- filter(LungCapData, Age > 10)
多重筛选条件——选出年龄大于 10的男性被试:
New_data <- filter(LungCapData, Age > 10, Gender == 'male')
更多数据操作和 dplyr 的功能可点击下面的网址进行探索:
https://genomicsclass.github.io/book/pages/dplyr_tutorial.html
本期的数据文件可以通过下面的链接下载:
https://pan.baidu.com/s/1NE9L6lC5BYUut7kV1u-LBw 提取码: cetv
本期录屏(无声动画版)
R元分析专题介绍:本活动是由荷兰心理统计联盟组织的第三次线上同辈互助学习活动,小组成员每周学习一章,并整理笔记录屏内容共享,从R基础到元分析效应量计算,作图,元分析高阶,如多水平meta, MetaSEM, network Meta-Analysis 。学习资料为《Doing Meta-Analsis in R 》这本书。