从 R 中具有是和没有值的两列中导出偶然性真值 table

Deriving a contingency truth table from two columns with yes and no values in R

我一直在尝试将我在 R 中的数据操作成与这里类似的东西 How to Find False Positive Prediction Count using R Script,但由于缺乏最少的示例,所以很难做到。我的数据框(称为信息)是这样的:

obs sim 不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不是的

我想得到的是一个真值table,去掉任意一列有NA的行,结果如下:

   obs  sim 
     yes no  
yes    6 2  
 no    1 7 

我们可以使用 complete.cases 创建一个逻辑索引,如果一行中有任何 NA 来对行进行子集化,那么它将给出 FALSE,然后应用 table

table(info[complete.cases(info),])
#    sim
#obs    no yes
#  no    7   2
#   yes  1   6

na.omit

table(na.omit(info))

数据

info <- structure(list(obs = c("no", "no", "no", "no", "yes", "yes", 
 "yes", "no", "no", "no", "no", "yes", NA, "no", "yes", "yes", 
 "yes"), sim = c("no", "no", "no", "yes", "yes", "yes", "no", 
 "no", "no", "no", "no", "yes", "yes", "yes", "yes", "yes", "yes"
 )), class = "data.frame", row.names = c(NA, -17L))

这将向您展示如何将模棱两可的数据表示重新组合成您的真相的一个可能版本。

dat <- scan(text=" no no no no no no no yes yes yes yes yes yes no no no no no no no no no yes yes NA yes no yes yes yes yes yes yes yes", what="")
Read 34 items
mdat <- matrix( dat, ncol=2, dimnames=list(NULL, c("obs","sim")))

 mdat
#------------
      obs   sim  
 [1,] "no"  "no" 
 [2,] "no"  "no" 
 [3,] "no"  "no" 
 [4,] "no"  "no" 
 [5,] "no"  "no" 
 [6,] "no"  "yes"
 [7,] "no"  "yes"
 [8,] "yes" NA   
 [9,] "yes" "yes"
[10,] "yes" "no" 
[11,] "yes" "yes"
[12,] "yes" "yes"
[13,] "yes" "yes"
[14,] "no"  "yes"
[15,] "no"  "yes"
[16,] "no"  "yes"
[17,] "no"  "yes"

 ?table
 table(mdat[,1],mdat[,2], dnn =list("obs","sim"))
#--------------
     sim
obs   no yes
  no   5   6
  yes  1   4

table 函数自动从计算中删除 NA 行。