《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com)
在分析公共卫生数据时,数据来源和数据格式多种多样,如文本数据、Excel数据、SPSS数据以及SAS数据等。在R语言中,数据的读取和写入是数据分析处理的重要环节。R语言提供了多种方法来读取和写入不同格式的数据,包括文本文件、Excel文件、SAS数据文件等。本节将介绍常用的数据读写方法。
2.3.1 读取文件
首先是读取文本文件。read.table()函数可用于将文本数据导入R,并将数据保存为一个数据框。例如代码h<-read.table(file='文件路径', header = FALSE, sep = "", skip = 0, nrows = -1)。其中:
- file:表示要读取的文本文件,路径中注意使用"\\"或"/"。
- sep:表示用什么分隔符分隔字段,默认以空格分隔。
- header:在读取数据时,决定是否将第一行数据作为变量的名称。
- skip:表示跳过前几行,从第几行开始读取数据。
- nrows:指定读取文件中的行数。
另一种常见的文本格式文件是CSV(逗号作为分隔符)文件。CSV格式是一种兼容性强的文件交换格式,在各类数据管理软件和统计软件中十分常见。read.csv()函数可用于读取CSV格式文件,该函数的用法与read. table()基本一致。为了更清晰地理解R语言数据的读取,下面来看一个示例。
假设有一个包含患者身高、体重和血压的文本文件clinical_data.txt,数据内容如下:
Patient_ID Height Weight Blood_Pressure
1 170 70 120/80
2 165 65 130/85
3 180 80 140/90
通过以下代码读取该文本文件:
clinical_data <- read.table("clinical_data.txt", header = TRUE, sep = "", skip = 0, nrows = -1)
有一个包含患者年龄、性别和诊断的CSV文件clinical_data.csv,数据内容如下:
Patient_ID Age Gender Diagnosis
1 45 Male Hypertension
2 30 Female Diabetes
3 55 Male Hyperlipidemia
通过以下代码读取该CSV文件:
clinical_data <- read.table("clinical_data.csv", header = TRUE, sep = " ", skip = 0, nrows = -1)
文本文件和CSV文件的读取步骤及读取结果如图2-9所示。
图2-9
2.3.2 写入文件
在R语言中,写入文件通常使用write.table()或write.csv()等函数,具体取决于要保存的数据类型和文件格式。例如,代码"write.table(b, file = '文件路径', sep = ',', row.names = F,quote = F,append = T)"用于将数据写入文件,其函数主要参数的含义如下。
- sep = ',':表示用","作为字段分隔符。
- row.names = F:表示不添加行号。
- quote = F:表示不添加双引号。
- append = TRUE:表示将数据附加到文件尾,而不是覆盖文件。
为了更清晰地理解R语言数据的写入,参考以下示例:
clinical_data <- data.frame(
Patient_ID = c(1, 2, 3),
Age = c(45, 30, 55),
Gender = c("Male", "Female", "Male"),
Diagnosis = c("Hypertension", "Diabetes", "Hyperlipidemia")
) #创建一个包含患者年龄、性别和诊断的数据框
write.csv(clinical_data, file = "clinical_data_output.csv", row.names = FALSE) #将数据框写入CSV文件
图2-10展示了创建的数据框的内容和将其写入CSV文件的过程。
图2-10
2.3.3 读写其他数据文件
R语言提供了很多功能包,用于读取其他格式的数据文件。例如,使用haven程序包中的read_spss()函数可以读取SPSS数据,read_sas()函数可以读取SAS数据,read_stata()函数可以读取Stata数据。使用这些函数可以将需要的数据导入R并转换为数据框格式。haven程序包还提供了相应的导出数据的函数,例如,write_sav()函数可以写入SPSS格式文件,write_sas()函数可以写入SAS格式文件,write_dta()函数可以写入Stata格式文件。
以下是其他类型数据读写的示例:
install.packages("haven")
library(haven) #安装并加载haven程序包
#读取文件
data <- read_spss("clinical_data.sav") #读取以".sav"为后缀的SPSS文件数据
data <- read_sas("clinical_data.sas7bdat") #读取以".sas7bdat"为后缀的SAS文件数据
data <- read_stata("clinical_data.dta") #读取以".dta"为后缀的Stata文件数据
#写入文件
clinical_data <- data.frame(
patient_id = c(1, 2, 3, 4, 5),
age = c(35, 45, 50, 28, 62),
gender = c("M", "F", "M", "F", "M"),
diagnosis = c("Hypertension", "Diabetes", "Obesity", "Asthma", "Hyperlipidemia")
) #创建一个示例的数据框
write_sav(clinical_data, "clinical_data.sav") #写入SPSS文件
write_sas(clinical_data, "clinical_data.sas7bdat") #写入SAS文件
write_sav(clinical_data, "clinical_data.dta") #写入Stata文件