小编jna*_*m27的帖子

如何替换表*中的NA值以用于所选列*?data.frame,data.table

有很多关于替换NA值的帖子.我知道可以用以下内容替换下表/框架中的NA:

x[is.na(x)]<-0
Run Code Online (Sandbox Code Playgroud)

但是,如果我想将其限制为仅某些列,该怎么办?让我给你看一个例子.

首先,让我们从数据集开始.

set.seed(1234)
x <- data.frame(a=sample(c(1,2,NA), 10, replace=T),
                b=sample(c(1,2,NA), 10, replace=T), 
                c=sample(c(1:5,NA), 10, replace=T))
Run Code Online (Sandbox Code Playgroud)

这使:

    a  b  c
1   1 NA  2
2   2  2  2
3   2  1  1
4   2 NA  1
5  NA  1  2
6   2 NA  5
7   1  1  4
8   1  1 NA
9   2  1  5
10  2  1  1
Run Code Online (Sandbox Code Playgroud)

好的,所以我只想将替换限制为列'a'和'b'.我的尝试是:

x[is.na(x), 1:2]<-0
Run Code Online (Sandbox Code Playgroud)

和:

x[is.na(x[1:2])]<-0
Run Code Online (Sandbox Code Playgroud)

哪个不起作用.

我的data.table尝试,在哪里y<-data.table(x),显然永远不会起作用:

y[is.na(y[,list(a,b)]), ]
Run Code Online (Sandbox Code Playgroud)

我想在is.na参数中传递列,但显然不起作用.

我想在data.frame和data.table中执行此操作.我的最终目标是在'a'和'b'中将1:2重新编码为0:1,同时保持'c'的方式,因为它不是逻辑变量.我有一堆列,所以我不想一个接一个地做.而且,我只想知道如何做到这一点.

你有什么建议吗?

replace r dataframe na data.table

71
推荐指数
4
解决办法
11万
查看次数

如何从R中的survfit中提取危害?

我有一个survfit对象.对我t=0:50多年感兴趣的总结幸存者很容易.

summary(survfit, t=0:50)
Run Code Online (Sandbox Code Playgroud)

它给出了每个t的生存.

有没有办法解决每个t的危险(在这种情况下,每个t = 0:50从t-1到t的危险)?我想获得与Kaplan Meier曲线相关的危险的平均值和置信区间(或标准误差).

当分布适合时(例如type="hazard"in flexsurvreg),这似乎很容易做到,但我无法弄清楚如何为常规的幸存对象做这个.建议?

r survival-analysis

7
推荐指数
2
解决办法
3456
查看次数

In R, how to replace values in multiple columns with a vector of values equal to the same width?

I am trying to replace every row's values in 2 columns with a vector of length 2. It is easier to show you.

First here is a some data.

set.seed(1234) 
x<-data.frame(x=sample(c(0:3), 10, replace=T))
x$ab<-0 #column that will be replaced
x$cd<-0 #column that will be replaced
Run Code Online (Sandbox Code Playgroud)

The data looks like this:

   x ab cd
1  0  0  0
2  2  0  0
3  2  0  0
4  2  0  0
5  3  0  0
6  2  0  0
7  0  0 …
Run Code Online (Sandbox Code Playgroud)

replace r vector multiple-columns dataframe

5
推荐指数
2
解决办法
4153
查看次数

将函数与 R 中的向量参数集成

我对上一篇文章有​​类似的挑战:如何通过向量来集成函数

我有一个函数,我想对曲线下的面积进行积分。

一、【生存】功能:

surv <- function(x,score) exp(-0.0405*exp(score)*x) # probability of survival
Run Code Online (Sandbox Code Playgroud)

score来自风险计算器,它调整生存估计。患者有不同的分数,例如:

score <- c(0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1) # 7 different scores
Run Code Online (Sandbox Code Playgroud)

surv如果我们有一个特定的时间点x,计算所有 7 名患者的时间很容易:

surv(5, score) # Survival to year 5
[1] 0.7161497 0.6914399 0.6651219 0.6371998 0.6077026 0.5766890 0.5442516
Run Code Online (Sandbox Code Playgroud)

但是要获得种群的平均存活率或个体的预期存活率,我需要计算曲线下的面积,其中曲线由函数给出surv。我需要计算x=0和限制下的面积x=Inf。我需要为所有 7 个(在本例中)患者执行此操作。

我引用的另一篇 stackoverflow 帖子也有类似的问题。目前尚不清楚该解决方案是否可以帮助我。我在下面介绍:

integrate(Vectorize(fun_integrate,vectorize.args='x'), upper = 3, lower = -3, vec = rnorm(100),subdivisions=10000)
Run Code Online (Sandbox Code Playgroud)

fun_integrate 是要集成的功能

vectorize.args 是要向量化并传递给 fun_integrate 的参数

vec 是作为要传递到 fun_integrate 的参数的值的向量 …

r function vector integrate survival-analysis

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