【发布时间】:2019-03-16 14:47:21
【问题描述】:
所以我的数据集看起来像这样,字母是因子变量。 Pred 列用于每个 ID 的预测观测值,Real 列是真实观测值。我想计算每个 ID 的预测值的总体准确度。
ID Pred1 Pred2 Pred3 Real1 Real2 Real3
1 A C E A D B
2 A B D E C C
3 E C A A B D
4 D A B B B D
5 B A C C A B
所以我想改变一个名为“score”的列,它为您提供 Pred1,2,3 和 Real1,2,3 列之间匹配观察数的百分比。 我只关心在任何“Real”列中找到任何“Pred”值。 如果在 Real1、Real2 和 Real3 之一中找到 Pred1,那么我给出的分数是 1/3。 如果 Pred1 和 Pred2(不是 Pred3)都在 Real1、Real2 和 Real3 列中的任何一个中找到,(*顺序无关紧要。Pred1 可以在 Real2 或 Real3 中找到——就在“Real”列中的任何位置),那么我给出2/3 的分数。 我希望这是有道理的。顺序无关紧要,我只关心在任何“Real”列中找到任何“Pred”值。 所以我想要下面的东西。
ID Pred1 Pred2 Pred3 Real1 Real2 Real3 Score
1 A C E A D B 1/3
2 A B D E C C 0
3 E C A A B D 1/3
4 D A B B E D 2/3
5 B A C C A B 1
我正在尝试编写一个函数并尝试了类似的东西 ifelse("Pred1" %in% c("Real1","Real2","Real3") , 1/3 ,0 )) 但效果不佳..(有错误消息与强制逻辑等我不知道怎么解决) 所以我也在尝试不同的事情,但一直被错误困住...... 有人可以帮忙吗?提前谢谢!
【问题讨论】:
标签: r dplyr match percentage