我一直在尝试将R中的数据操纵到此处How to Find False Positive Prediction Count using R Script类似的位置,但是由于缺少最少的示例而很难做到。我的数据框(称为信息)是这样的:
obs sim 否否否否否否是是是是是是是否否否否否否否否否是是不是是是是是是是是是是
我想要获得的是一个真值表,该真值表会删除任一列中带有NA的任何行,其结果如下:
obs sim
yes no
yes 6 2
no 1 7
答案 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行。