首先来看拿到这组数据,需要按照outcome的列名不同将数据保存为Paresthesia.csv和Dry mouth.csv两个文件,假如数据量少,我们一般在Excel进行筛选(保证列名存在,直接复制时第二组数据需要手动添加列名),然后复制每组数据进行新建就可以实现。但是当数据量大时,这种方法就是一种最笨的方法,耗时耗力。
因此笔者以"将excel按照某一列拆分成多个文件"进行了搜索,结果发现在Excel中利用VBA代码就可以实现,但是这种方法看都看不懂,那么有没有利用R语言可以实现的方法呢?在网上看到这篇教程https://blog.csdn.net/u010652755/article/details/72979692才有一种恍然大悟之感。接下来做一个简要的分享。其实实现这个的操作很简单,主要分为两步,第一步是按照列名筛选数据,第二步是将符合列名的数据进行保存,这也跟我们在Excel中的操作思路是一样的。第一步,如何去识别列名呢?我们需要用到一个函数unique,这也是我在最开始没有考虑到的(学的太少)。那如何将符合列名的数据进行保存呢?这里也分为两步,第一步是按照列名构建数据,我们需要用到subset函数,即在数据集中按照列名提取子集,第二步是将子集按照列名进行保存,我们需要用到write.csv.library(readxl) # 加载程序包读取excel数据
dt<- read_excel(“不良反应数据.xlsx”)
res <- unique(dt[,7]) # 将列名去重,即将列名保存为res变量,7是列名的列数
for (i in c(1:nrow(res[,1]))){ # 撰写循环,每一个列名运行一次
dt1 <- subset(dt, dt[,7]==as.character(res[i,1]))# 按照列名不同提取数据
cfilename = paste(res[i,1],”.csv”,sep = “”) # 构建保存的文件名以及格式
write.csv(dt1[,1:7],cfilename) # 保存数据
}