小编Jua*_*uan的帖子

使用列中的固定效果信息重塑R中的数据

我已经在excel中为我提供了一些非常笨拙的格式化数据,我需要对其进行重塑,使其适合在R中运行生存分析。

我将数据摘录上载到Google云端硬盘:https : //drive.google.com/open?id=1ret3bCDCYPDALQ16YBloaeopfl2-qVbp
原始数据框包含大约2100个观测值和950个变量

这是基本数据帧:

my.data<-data.frame(
  ID=c( "", "","C8477","C5273","C5566"),
  LR=c("2012Y","State:FL",5,6,8),
  LR=c("2012Y","State:AZ",5,8,10),
  LR=c("2011Y","State:FL",7,2,1)
)

my.data

#     ID       LR     LR.1     LR.2
# 1          2012Y    2012Y    2011Y
# 2       State:FL State:AZ State:FL
# 3 C8477        5        5        7
# 4 C5273        6        8        2
# 5 C5566        8       10        1
Run Code Online (Sandbox Code Playgroud)

所有列均具有相同的名称“ LR”。我不知道以后是否会出现问题...

在第1行中给出了Year,在第2行中给出了观察的相应状态。

作为输出,我需要一些面板数据供以后的生存分析使用。

my.data<-data.frame(
  ID=c("C8477","C5273","C5566"),
  Year=c("2012","2012","2011"), 
  State=c("FL","AZ","FL"),LR=c(5,8,1)
) 

my.data

#     ID Year State LR
# 1 C8477 2012    FL  5
# 2 C5273 2012    AZ  8
# 3 C5566 2011 …
Run Code Online (Sandbox Code Playgroud)

stack r reshape

6
推荐指数
1
解决办法
76
查看次数

如何在R中按组删除开头和结尾的NA的行

我需要删除包含NA的行,但是仅当它们在前(后)行(即在变量的任何数据出现之前(之后))时才会删除。这非常类似于: 如何按类别在data.table列中查找(而不是替换)前导NA,间隙和最终NA, 以及: 如何在R中按条件删除前导行和尾随行?

但是,我需要按照变量“ ID”进行分组。我将在后面的步骤中估算NA之间的数据。

尾随NA也应如此。

初始data.frame如下所示:

df1<-data.frame(ID=(rep(c("C1001","C1008","C1009","C1012"),each=17)),
  Year=(rep(c(1996:2012),4)),x1=(floor(runif(68,20,75))),x2= 
  (floor(runif(68,1,100))))

#Introduce leading / tailing NAs

df1[1:5,3]<-NA
df1[18:23,4]<-NA
df1[35:42,4]<-NA
df1[49:51,3]<-NA
df1[66:68,3]<-NA


#introduce "gap"- NAs
set.seed(123)
df1$x1[rbinom(68,1,0.1)==1]<-NA
df1$x2[rbinom(68,1,0.1)==1]<-NA
Run Code Online (Sandbox Code Playgroud)

输出相当长。这是为了在“空白” NA和“领先/尾随” NA之间做出适当的区分

head(df1,10)

      ID Year x1 x2
1  C1001 1996 NA 40
2  C1001 1997 NA 88
3  C1001 1998 NA 37
4  C1001 1999 NA 29
5  C1001 2000 NA 17
6  C1001 2001 42 18
7  C1001 2002 20 48
8  C1001 2003 30 26
9  C1001 2004 66 22 …
Run Code Online (Sandbox Code Playgroud)

group-by r delete-row na

5
推荐指数
1
解决办法
128
查看次数

小鼠的插补方法 - 数据集中的相关性。电阻

我正在努力使用小鼠进行插补。主要目标是估算 NA(如果可能,按组)。由于示例有点大,可以在此处简单发布,因此可以下载:https : //drive.google.com/open?id=1InGJ_M7r5jwQZZRdXBO1MEbKB48gafbP

我的问题是:

  1. 一般来说,相关数据有多大的问题?我该怎么做才能仍然估算数据?数据是实证研究问题的一部分,我还不知道要包含哪些变量,因此最好暂时保留尽可能多的变量。

  2. 什么方法比 "cart" 和 "pmm" 更合适?我不想简单地估算平均值/中位数....

  3. 我可以通过“ID”以某种方式估算数据吗

  4. 调试技巧?

这是我的代码

#Start
require(mice)
require(Hmisc)
'setwd(...)
'test.df<-read.csv(...)
str(test.df)
Run Code Online (Sandbox Code Playgroud)

检查相关性:前 2 列包含标识符和年份,因此无需查看。

test.df.rcorr<-rcorr(as.matrix(test.df[,-c(1:2)]))
test.df.coeff<-test.df.rcorr$r
test.df.coeff<-corrplot(test.df.coeff)
Run Code Online (Sandbox Code Playgroud)

可以看出,数据中有一些很强的相关性。对于一个简单的任务,省略所有具有强相关性的列。

#Simple example

test.df2<-test.df[,-c(4,7,10,11)]
test.df2
sum(is.na(test.df2))
Run Code Online (Sandbox Code Playgroud)

现在,让我们在不指定方法的情况下估算 test.df2:

imputation.df2<-mice(test.df2, m=1, seed=123456)
imputation.df2$method
test.df2.imp<-mice::complete(imputation.df2)

Warning message:
Number of logged events: 1 


sum(is.na(test.df2.imp))

Run Code Online (Sandbox Code Playgroud)

可以看出,所有的 NA 都被估算了。并且使用的方法只是“pmm”。

使用完整数据集,我几乎立即收到以下错误消息:

imputation.df<-mice(test.df,m=1,seed = 66666)

 iter imp variable
  1   1  x1Error in solve.default(xtx + diag(pen)) : 
  system is computationally singular: reciprocal condition number = 1.49712e-16
Run Code Online (Sandbox Code Playgroud)

这仅仅是由于数据中的相关性吗?

最后,我的 ID 插补代码,在显示此错误之前运行了更长的时间:

test123<- …
Run Code Online (Sandbox Code Playgroud)

debugging r missing-data r-mice imputation

4
推荐指数
1
解决办法
1250
查看次数

R 中的 cox 回归输出表或图

我有一个 Cox 回归,它采用strata()tt()

是否有任何软件包可以帮助以表格格式生成美观、信息丰富的结果输出?虽然ggforest()处理tt()但不处理strata()

我正在寻找除打印之外的任何方法来产生合适的输出summary(coxph)。无论是 Latex 还是 HTML。

到目前为止,唯一的解决方案是自己构建表格,但这看起来并没有足够的吸引力,无法放入论文中......

这是虚拟数据集:

set.seed(132456)
'dummy survival data'
df<-data.frame(id=seq(1,1000,1), event=rep(0,1000),time=floor(runif(1000,7,10)),group=floor(runif(1000,0,2)), 
               var1 = rnorm(1000, 1, 3), var2 = seq(1,1000))
'set events for a few random subjects'

id_list<-c(as.numeric(floor(runif(500,1,1000))))
df$event[df$id %in% id_list]<-1

'set survival times for events'
t_list<-c(as.numeric(floor(runif(394,1,5))))
df2<-df[df$event==1,]
df2$time<-t_list


'combine data'
df<-rbind(df,df2)
summary(df)

'Set up surfit '
require(survminer)
KM_fit<-coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df)

Run Code Online (Sandbox Code Playgroud)

ggforest()返回以下错误:

> ggforest(KM_fit)
Error in `[.data.frame`(data, …
Run Code Online (Sandbox Code Playgroud)

html r cox-regression r-markdown survival-analysis

3
推荐指数
1
解决办法
4110
查看次数