从 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 行。
我一直在尝试将我在 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 行。