从两列中得出在R中具有yes和no值的偶然性真值表

时间:2018-11-18 23:03:15

标签: r truthtable

我一直在尝试将R中的数据操纵到此处How to Find False Positive Prediction Count using R Script类似的位置,但是由于缺少最少的示例而很难做到。我的数据框(称为信息)是这样的:

obs sim 否否否否否否是是是是是是是否否否否否否否否否是是不是是是是是是是是是是

我想要获得的是一个真值表,该真值表会删除任一列中带有NA的任何行,其结果如下:

   obs  sim 
     yes no  
yes    6 2  
 no    1 7 

2 个答案:

答案 0 :(得分:1)

我们可以使用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))

答案 1 :(得分:1)

这将向您展示如何将模棱两可的数据表示重组为事实的一种可能版本。

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

表格功能会自动从计算中删除NA行。