我想扩展问题:Find the index of the column in data frame that contains the string as value
我有数据
append()
我想得到与专家选择相关的分数。目标是找出1.)选择是否正确,但我需要检查是否有专家选择的代码得分的分数。
所以在示例数据中,使用dplyr:
data<-data.frame(expert=c("class.1","class.4","class.2"),
choice1=c("class.3","class.8","class.10"),
score1=c(0.92,0.91,0.30),
choice2=c("class.1","class.7","class.9"),
score2=c(0.70,0.78,0.30),
choice3=c("class.6","class.1","class.2"),
score3=c(0.01,0.58,0.30),
stringsAsFactors=FALSE
)
得到答案的一部分,但不处理关系。 Find the index of the column in data frame that contains the string as value中的答案使用grepl,我认为它不能处理正则表达式模式的向量。
我尝试过max,max.col,单独使用,并与rowwise()结合使用,但我似乎无法得到正确的答案。我还制作了数据&#34; tidy&#34;使用重塑(感谢UCLA IDRE http://stats.idre.ucla.edu/r/faq/how-can-i-reshape-my-data-in-r/),但我无法正确过滤数据。
data %>% mutate(Right=expert==choice1)
我知道专家选择的专栏,但失去了与选择的联系.1
最好的解决方案是有一个函数返回一个因子(右,平局,错误),其中第3行将返回平局。
修改 该数据将分类器的结果与人类注释器进行比较。分类器有时可以产生绑定结果(2个或更多类的分数相同)。我想确定分类器何时正确(choice1 == expert),但没有绑定(我称之为右);绑定(当专家和分类器选择的类具有相同的分数,但是我称之为TIE的代码不同);否则分类错了。 谢谢
答案 0 :(得分:0)
好吧,我只能考虑使用ifelse语句;
data %>% mutate(TF1 = choice1 == expert,
TF2 = choice2 == expert,
TF3 = choice3 == expert,
TFs1 = score2 == score1,
TFs2 = score3 == score1,
Decision = ifelse(TF1==TRUE, "Right",
ifelse(TF2 == TRUE & TFs1 == TRUE | TF3==TRUE & TFs2 == TRUE, "Tie", "Wrong")))
这可能不是您要查找的那个,但可以按照您的解释工作。