计算数据框中满足多个条件的行数

时间:2020-02-29 19:23:31

标签: r conditional-statements

我有一个问题。我正在处理一个包含患者和多种疾病的数据库,我将其打入是/否或数字。我首先计算了满足至少一项标准5的患者(行)的数量,请参见以下代码(有效):

newDate

但是现在我要计算有多少患者符合上述条件的2、3和4个标准。只要满足2个或3个条件,就可以满足5个条件中的哪个条件。我真的不知道该怎么做。

有帮助吗?谢谢!

3 个答案:

答案 0 :(得分:0)

逻辑TRUEFALSE可以像数字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)