使用值在数据框中查找列

时间:2017-04-10 15:24:33

标签: r dplyr

我想扩展问题: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的代码不同);否则分类错了。 谢谢

1 个答案:

答案 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")))

这可能不是您要查找的那个,但可以按照您的解释工作。