我有一个问题。我正在处理一个包含患者和多种疾病的数据库,我将其打入是/否或数字。我首先计算了满足至少一项标准5的患者(行)的数量,请参见以下代码(有效):
newDate
但是现在我要计算有多少患者符合上述条件的2、3和4个标准。只要满足2个或3个条件,就可以满足5个条件中的哪个条件。我真的不知道该怎么做。
有帮助吗?谢谢!
答案 0 :(得分:0)
逻辑TRUE
和FALSE
可以像数字1和0一样对待。
例如TRUE+TRUE
等于2。
所以你可以这样写:
nrow( df_1[df_1$tenderness_CS != 'no' + df_1$intoxication != 'no' +
df_1$focal_neuro_deficits != 'no' + (df_1$EMV <= 13) + df_1$distr_injury != 'no' %in% c(2,3,4),])
因为这将首先对每个条件的结果求和(当条件为TRUE时为1,当条件为FALSE时为0),然后测试和是否在向量c(2,3,4)
中。
答案 1 :(得分:0)
你可以做
n_conditions <- (df_1$tenderness_CS != 'no') +
(df_1$intoxication != 'no') +
(df_1$focal_neuro_deficits != 'no') +
(df_1$EMV <= 13) +
(df_1$distr_injury != 'no')
这将为您提供每个患者所满足条件数量的向量。
然后您可以做
table(n_conditions)
显示满足每种条件的时间,并且
df_1[n_conditions == 3,]
要对dara框架进行子集化,以仅获取那些满足3个条件等的患者。
答案 2 :(得分:0)
我们可以使用+
来代替rowSums
。好处是它也会使用带有NA
参数的na.rm
个元素,即,如果特定列连续有NA,那么如果我们执行NA
,则会导致+
nm1 <- c("tenderness_CS", "intoxication",
"focal_neuro_deficits", "distr_injury")
n_conditions <- rowSums(cbind(df_1[nm1] != "no", df_1$EMV <= 13), na.rm = TRUE)
现在,我们用table
table(n_conditions)