当一个列变量等于R中的另一个时计算行数

Calculating number of rows when one column variable equals another in R

非常感谢您的帮助:

我已将评估者间变量进行二分法进行分析

df <- data.frame("rater 1"=c(1,1,0,0,1), "rater 2"=c(1,0,0,1,1))

我想知道评分者 1 = 1 和评分者 2 = 1(真阳性)的行数

类似地,评分者 1 = 0 和评分者 2 = 0(真阴性)

类似地,评分者 1 = 1 和评分者 2 = 0(误报) 等等

有没有简单的方法来做到这一点?

谢谢

试试这个:

library(dplyr)

df %>% 
  mutate(outcome = case_when(rater.1 == 1 & rater.2 == 1 ~ "true positive", 
                             rater.1 == 0 & rater.2 == 0 ~ "true negative", 
                             rater.1 == 1 & rater.2 == 0 ~ "false positive", 
                             rater.1 == 0 & rater.2 == 1 ~ "false negative")
) %>% 
  group_by(outcome) %>% summarise(n = n())

用space字符命名变量时要小心

您可以使用基础 R table,其中 returns 独特组合的计数。

table(df)

#----
        rater.2
rater.1  0 1
      0  1 1
      1  1 2

或者您可以使用 dplyr::count

dplyr::count(df, rater.1, rater.2)

#------
  rater.1 rater.2 n
1       0       0 1
2       0       1 1
3       1       0 1
4       1       1 2

如果您想在数据框中进行计数,可以尝试aggregate

> aggregate(cnt ~ ., cbind(df, cnt = 1), sum)
  rater.1 rater.2 cnt
1       0       0   1
2       1       0   1
3       0       1   1
4       1       1   2

使用 base R

中的 rowsum
rowsum(rep(1, nrow(df)), group =do.call(paste, df))