当一个列变量等于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))
非常感谢您的帮助:
我已将评估者间变量进行二分法进行分析
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))