利用R语言把纵向数据变成横向数据并给新变量重命名

       临床研究中,常用EDC系统收集数据。一般导出的数据都是纵向数据,但纵向数据对于广大的临床医生来说并不友好。往往需要手动把纵向数据变为横向数据才能进行数据分析。不仅费时费力,而且容易出现复制粘贴错误。

       作者在进行统计分析工作当中,早期也遇到同样的数据问题,比如5个访视的20个指标血常规数据,拉直后就会衍生成100个新变量,手动整理太费时间了。好在可以通过编程来自动实现纵向数据的拉横。小编自己写了一个function()来解决这个问题。

data<-mydata[c("SUBJID","AVISITN","PARAM","AVAL")] #SUBJID是唯一编号,AVISITN是访视号,PARAM是检查项,AVAL是值

ZONGHENG<-function(data){
AAA<-data.frame(table(data$AVISITN))
AAA<-AAA[1]  #提取访视号有几类,后面变量重命名需要
BBB<-data.frame(table(data$PARAM))
BBB<-BBB[1]  #提取检查项名称有几类,后面变量重命名需要
SUBJID<-NA
dataTT<-data.frame(SUBJID) #建立一个空数据集备用

for (i in 1:length(AAA$Var1)) {
  for (j in 1:length(BBB$Var1)) {
    dataccc<-subset(data,data$AVISITN==AAA[i,1]&data$PARAM==BBB[j,1])  #筛选某个访视下的某检查项的数据
    names(dataccc)[4]<-paste(BBB[j,1],AAA[i,1],sep = "_")             #给检测值重命名为“检查项+访视号”
    dataccc<-dataccc[,c(1,4)]                                           
    dataTT<-merge(dataTT,dataccc,all = T,by="SUBJID")                 #按唯一编号合并数据
  }
}
names(dataTT)                                         #查看拉横的数据集的变量名
write.csv(dataTT,"dataTT.csv",row.names = F,na="")     #导出拉横向的数据
}

ZONGHENG(data)

上面的代码解决的是只有一个值变量(AVAL)需要重命名的情况。但是大多数时候不单单有检测值,还有单位、检测时间等变量也同样需要重命名。这时候function()需要再引入一个参数n来解决。

代码如下:

ZONGHENG<-function(data,n){   #n是第几个变量开始需要重命名
AAA<-data.frame(table(data$AVISITN))
AAA<-AAA[1]  #提取访视号有几类,后面变量重命名需要
BBB<-data.frame(table(data$PARAM))
BBB<-BBB[1]  #提取检查项名称有几类,后面变量重命名需要
SUBJID<-NA
dataTT<-data.frame(SUBJID) #建立一个空数据集备用
for (i in 1:length(AAA$Var1)) {
  for (j in 1:length(BBB$Var1)) {
    dataccc<-subset(data,data$AVISITN==AAA[i,1]&data$PARAM==BBB[j,1])  #筛选某个访视下的某检查项的数据
    names(dataccc)[n]<-paste(BBB[j,1],AAA[i,1],sep = "_")             #给检测值重命名为“检查项+访视号”
    for (g in n+1:length(dataccc)) {
      names(dataccc)[g]<-paste(BBB[j,1],AAA[i,1],names(dataccc)[g],sep = "_")
    }
    dataccc<-dataccc[,c(1,n:length(dataccc))]   #删除访视号和检查项列                                        
    dataTT<-merge(dataTT,dataccc,all = T,by="SUBJID")                 #按唯一编号合并数据
  }
}
names(dataTT)                                         #查看拉横的数据集的变量名
write.csv(dataTT,"dataTT.csv",row.names = F,na="")     #导出拉横向的数据
}

举例子:

data<-mydata[c("SUBJID","AVISITN","PARAM","AVAL","AVALC")] #SUBJID是唯一编号,AVISITN是访视号,PARAM是检查项,AVAL是检测值,AVALC是单位

ZONGHENG(data,4)  #4,从第四个变量开始需要重命名

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
R语言中,处理纵向数据(也称为面板数据或重复测量数据)时,不变性(如内生性或固定效应不变性)是一个关键的概念,特别是在统计建模和回归分析中。不变性假设每个观察单元的效应(如个体特征或时间趋势)在整个样本期内是恒定的,不会随时间或其他变量变化。 一种常用的方法来检查和控制不变性的是引入固定效应或随机效应模型。固定效应模型会为每个个体或单位(例如,实验组中的每个参与者)分配一个不可观测的参数,这些参数在模型中被认为是常数。这样可以排除个体特定的偏差。 1. **固定效应模型** (Fixed Effects, FE):使用`lm()`或`plm()`函数(对于面板数据)时,如果选择`"within"`选项,就是使用固定效应模型。它适合于研究中的个体差异是重要的解释变量的情况。 2. **随机效应模型** (Random Effects, RE):`lme()`函数(来自`nlme`包)或`mixed_model()`(`lmer()`函数,来自`lme4`包)用于处理随机效应模型,其中假设效应是随机的,通常基于个体水平的误差项。 3. **工具变量法** (Two-Stage Least Squares, 2SLS):如果存在内生性,可能需要用工具变量来估计不变性,这在`ivreg()`函数(`AER`包)中有体现。 4. **Hausman检验**:`hausman()`函数(`plm`包)可以帮助你进行 Hausman 检验,用来比较固定效应和随机效应模型的有效性。 检查不变性之后,如果发现不变性存在问题,可能需要调整模型或采用其他方法,如差分法、聚类标准误等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值