在数据进行前期处理中经常会涉及到数据集的合并,变量名、变量属性的更改及变量的排序,这一章就这四个方面给大家做一下简单介绍。
开始之前,我们先读入elder1、elder2这两个文件
elder1<-read.csv("elder1.csv")
elder2<-read.csv("elder2.csv")
一、数据集合并
rbind(数据集1,数据集2) 添加行,增加样本量,将两个数据样本量叠加
cbind(数据集1,数据集2) 添加列,增加变量,将两个数据变量叠加
merge(数据集1,数据集2,by=”变量”,all=逻辑值) by=”变量” 按“变量”进行合并;all=默认值False 两个数据集“串联”,TRUE两个数据集“并联”
方法一 rbind(数据集1,数据集2) 追加样本量,前提是两个数据库的变量名需相同。为了方便演示,将elder1数据样本量一分为二成t1,t2两个数据集。
t1<-elder1[elder1$SBP>=140,] #提取SBP>=140的样本
t2<- elder1[elder1$SBP<140,] #提取SBP<140的样本
t3<-rbind(t1,t2)
dim(t3)
[1] 5846 12 t3和elder1 数据值相同
方法二 cbind(数据集1,数据集2) 添加列,前提是要求行数相同,而且两个数据集的行数所指的观察单位需对应,不然合交后的数据容易出现一行是两个人的数据。
在数据集横向追加中不建议使用。为了方便演示,将elder1数据样本量一分为二成t4,t5两个数据集。
t4<-elder1[,-c(2,3)] #数据集包含除2,3列以外的变量
t5<-elder1[,c(2,3)] #数据集只包含2,3列以外的变量
t6<-cbind(t4,t5)
dim(t6)
[1] 5846 12 t6和elder1 数据值相同
方法三 merge(数据集1,数据集2,by=”变量”,all=逻辑值) 合并两个变量名,建议使用merge语句; all函数决定合并的方式
t7<-merge(elder1,elder2,by="ID",all =TRUE) #两个数据库的ID“串联”
dim(t7)
[1] 5850 31 并联,行数增加
将两个数据按ID都进行合并
t8<-merge(elder1,elder2,by="ID",all =FALSE) #两个数据库都有的ID“串联”
dim(t8)
[1] 4031 31 串联 行数减少
只合并两个数据集都有的ID
二、变量名重命名
names(数据集)[列数]<-“新变量名” 对一个变量名进行修改
rename(数值集,c(旧变量名="新变量名")) 可更改多个变量名
fix(数据集) 窗口界面操作
方法一 names(数据集)[列数]<-“新变量名” 只适合于对一个变量名进行修改,还需要知道要修改的变量列数,比较麻烦,不常用。
names(elder1)[2]<-"SBP1" #[]第几列的变量名进行修改
names(elder1)
[1] "ID" "SBP1" "DBP" 第二列变量名改成SBP1
方法二 rename(数值集,c(旧变量名="新变量名")) 可对多个变量进行同时修改
library(reshape)
t1<-rename(elder1,c(SBP="SBP1")) #将变量名修改,SDP原变量,”SDP1”新变量。
names(t1)
[1] "ID" "SBP1" "DBP" 将SBP变量名更改成SBP1
t2<-rename(elder1,c(SBP="SBP1",DBP="DBP1")) #将两个变量名进行修改
names(t2)
[1] "ID" "SBP1" "DBP1" "TC" 将SBP,DBP变量名更改成SBP1,DBP1
方法三 fix(数据集) 最简单,窗口界面操作,适合新手修改变量名,缺点在于结果修改不可逆转
fix(elder1) #窗口直接修改
三、变量属性的更改
数据集$变量<-as.factor(数据集$变量) 转化成因子
数据集$变量<-as.character(数据集$变量) 转化成字符型
数据集$变量<-as. numeric (数据集$变量) 转化成数值
fix(数据集) 窗口界面操作
方法一 数据集$变量<-as.函数(数据集$变量) 函数可以是factor,character,numeric等所要转化的数据类型;前后变量可相同,也可不同,若前后变量相同,在原变量上更改;前后变量不同,生成一个新变量
elder2$sex1<-as.factor(elder2$sex) #将elder2里的sex变量属性改成因子,并生成一个新变量sex1
elder2$sex1<-as.numeric(elder2$sex1) #将sex1变量属性改成数值
方法二fix(数据集) 和改变量名一样,缺点在于改后没有记录
fix(elder2)
四、数据集排序
sort(数据集$变量,decrease=逻辑符,na.last=逻辑符) 将某个变量进行排序,decrease默认FALSE 从低到高排序,TRUE 从高到低排序;na.last默认值FALSE 缺失值在最前面,TRUE缺失值在最后
数据集[order(数据集$变量),] order默认返回是升序,order(-)降序
方法一 sort(数据集$变量,decrease=逻辑符,na.last=逻辑符) 返回变量排序结果,只对这一个变量进行排序,表格不受影响。
sort(elder1$SBP) #SBP变量从低到高排序
sort(elder1$SBP,decreasing = TRUE) #SBP变量从高到低排序
sort(elder1$SBP,na.last = TRUE) #缺失值在最后
方法二 数据集[order(数据集$变量),] order将“行位置”按变量的升序排列,对数据集整体进行排序,表格发生改变。
order(elder1$SBP) #按变量值升序,返回变量值所在 “行位置”,
t8<-elder1[order(elder1$SBP),] # 数据库中进行排序,从低到高
t9<-elder1[order(-elder1$SBP),] # 数据库中进行排序,从高到低
DAY8的内容就介绍到这里!
本章提到的数据集elder1,elder2,请点击“阅读原文”至百度网盘下载。
最后,一个月就能学会R语言,你敢挑战一下吗?
转自:医学论文与统计分析
- 本文固定链接: https://maimengkong.com/kyjc/968.html
- 转载请注明: : 萌小白 2022年6月4日 于 卖萌控的博客 发表
- 百度已收录