我有一个空气质量模型的颗粒物浓度估算矩阵(2601乘58).由于现实生活中的空气质量监测器无法测量低于0.1 ug/L,我需要替换矩阵中<0.1具有零/ NA/null值的所有值.
有人建议ifelse(test, true, false)使用逻辑语句,但是当我尝试这个时它会删除所有内容.
我有大量的医生访问记录数据框.我想只选择那些在我感兴趣的一组指定诊断代码中找到列出的11个诊断代码中至少一个的行.
数据帧为18列乘39,019行.我对第6:16列中的诊断代码感兴趣.以下是这11个诊断列的数据样本(用于保护可识别信息):
diag1 diag2 diag3 diag4 diag5 diag6 diag7 diag8 diag9 diag10 diag11
786 272 401 782 250 91912 530 NA NA NA NA
845 530 338 311 NA NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
这是我尝试使用的代码:
mydiag <- c(401, 410, 411, 413, 415:417, 420:429, 434, 435, 444, 445, 451, 460:466, 480:486, 490:493, 496, 786)
y = apply(dt[,paste("diag", 1:11, sep="")], 1, function(x) sum((any(x !=NA %in% mydiag))))
y = as.data.frame(y)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在我提供的2个示例行中,我希望保留第一行但是抛出第二行,因为它没有我想要的任何代码.我提供的代码示例不起作用 - 我得到一个39,019"1"值的向量.因此我猜测apply语句在某种程度上被视为逻辑,但我知道并非所有行都有感兴趣的代码,所以在这种情况下我会预期1和0.
有没有更好的方法来执行此行选择任务?
我有大量的医生访问记录数据框.每条记录(行)最多可包含11个诊断代码.我想知道每行中有多少个非NA诊断代码.
以下是数据示例:
diag1 diag2 diag3 diag4 diag5 diag6 diag7 diag8 diag9 diag10 diag11
786 272 401 782 250 91912 530 NA NA NA NA
845 530 338 311 NA NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
所以在这两行中,我想知道第1行有7个代码,第2行有4个代码.数据帧为31,596行,因此循环过程太长.我想使用"apply"语句加快速度:
z = apply(y[,paste("diag", 1:11, sep="")], 1, function(x)sum({any(x[!is.na(x)])}))
Run Code Online (Sandbox Code Playgroud)
R只返回1的向量,其长度与数据集中的行数相同.我觉得使用"any"有问题吗?有没有人有一个很好的方法来计算多列中非NA值的数量?谢谢!
我有一个包含三列的矩阵:县,日期和ED访问次数.每个县的日期重复,像这样(只是一个例子):
County A 1/1/2012 2
County A 1/2/2012 0
County A 1/3/2012 5
... etc.
County B 1/1/2012 3
County B 1/2/2012 4
... etc.
Run Code Online (Sandbox Code Playgroud)
我想折叠这个矩阵来总结每个县的每个日期的访问量.所以它看起来像这样:
1/1/2012 5
1/2/2012 4
etc.
Run Code Online (Sandbox Code Playgroud)
我试图"table()"在R中使用该功能,但似乎无法通过这种方式按日期访问操作.当我这样做时"table(dt$date, dt$Visits)",给我一个频率表,如下所示:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2011-01-01 3 1 2 0 1 1 0 2 0 0 0 0 0 0 0 0
2011-01-02 2 3 1 0 0 1 0 0 1 …Run Code Online (Sandbox Code Playgroud) 我正在使用急诊室ICD-9代码数据(健康诊断),它是三位数代码后最多2位小数(例如:499,499.1,499.51等).某些特殊代码的字母为"V"而不是第一个数字,例如"V10.46".
每个急诊室访问(行)最多可以有11个诊断代码(列),因此我使用reshape()将数据集更改为长格式.现在我想使用floor()来删除那些小数点.但是R不能用角色来摆弄东西!我收到此错误:Math.factor(dtl $ diag)中的错误:floor对因素没有意义
这篇文章有一些相关性,但我想知道是否有更好的方法? R:删除变量中的字符观察值
有任何想法吗?
对于一组诊断代码,我有一个超过2个月的急诊科访问的大矩阵"dt".列是"年龄","性别","日期","县","拉链","主观","位置","诊断"和"dt"; 尺寸为872344×9.
我想从这个矩阵中进行子集化,并创建一个新的矩阵,其中只包含"diag"列的数字介于800和849(所有列)之间的那些行.
我一直在搞乱构建一个循环并使用"which"或"if.else",但我遇到了一个心理障碍.看起来如果它只是一个我想要提取的诊断代码会更容易,但50个代码的系列使事情变得复杂......指向一个循环?有没有人有基于找到某些值的子集的想法?
这是我的开始(它不起作用):
dta = dt
b = 800:849
for (i in 1:length(b)) {
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有 8 个预测变量的混合 lmer 模型示例,我想提取协变量的名称、它们的系数、它们的标准误差和它们的 p 值,并将它们放入一个矩阵中,以便我可以将它们写出到 .csv。
我已经将前 3 列提取到列中,但我不知道如何提取 p 值。你怎么做到这一点?它是 vcov 或 getME() 的变体吗?
这是模型和摘要的样子:
mod <- lmer(outcome ~ predictor1 + etc...
summary(mod)
Generalized linear mixed model fit by the Laplace approximation
Formula: Freq ~ pm.lag0 + pm.lag1 + pm.lag2 + pm.lag3 + pm.lag4 + pm.lag5
+ temp13 + temp013 + rh13 + rh013 + (1 | county)
Data: dt
AIC BIC logLik deviance
3574 3636 -1775 3550
Random effects:
Groups Name Variance Std.Dev.
county (Intercept) 1.6131 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用splines包中的ns()函数和我使用的泊松GLM来测试颗粒物浓度()对健康结果的重要性():pm.lag0Freq
> gfit4 = glm(Freq ~ pm.lag0 + ns(date, df=2), family = poisson(),
data = dt, offset = log(pop))
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
Error in splineDesign(knots, x, ord, derivs, outer.ok = outer.ok) :
must have at least 'ord' knots
In addition: Warning message:
In sort(as.numeric(knots)) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)
这不是一个有效的用途ns()吗?有人可以帮我解码这个错误信息吗?R提供的样条文档似乎与此错误(?ns)不匹配.
我试图在循环中使用R中的"where"函数从基于匹配元素的两个数据集中挑选出某一行,然后制作两者的散点图.下面的代码示例提供了两个数据帧和循环的行名称.每个数据框包含的县比"mycounties"中列出的县多.
我之前在循环中使用了"where"函数,但是这次R返回错误消息"where"不存在?我知道"哪里"存在!我的问题是,如何让R识别这个"where"结构,还是有更好的方法来挑选我想要绘制的行?谢谢!
> names(dts)
[1] "county" "Freq125" "Freq126" "Freq127" "Freq128" "Freq129" "Freq130" "Freq131" "Freq132" "Freq133" "Freq134" "Freq135" "Freq136" "Freq137"
[15] "Freq138" "Freq139" "Freq140" "Freq141" "Freq142" "Freq143" "Freq144" "Freq145" "Freq146" "Freq147" "Freq148" "Freq149" "Freq150" "Freq151"
[29] "Freq152" "Freq153" "Freq154" "Freq155" "Freq156" "Freq157" "Freq158" "Freq159" "Freq160" "Freq161" "Freq162" "Freq163" "Freq164" "Freq165"
[43] "Freq166" "Freq167" "Freq168" "Freq169" "Freq170" "Freq171"
> names(pm)
[1] "county" "pm125m" "pm126m" "pm127m" "pm128m" "pm129m" "pm130m" "pm131m" "pm132m" "pm133m" "pm134m" "pm135m" "pm136m" "pm137m" "pm138m"
[16] "pm139m" "pm140m" "pm141m" "pm142m" "pm143m" …Run Code Online (Sandbox Code Playgroud)