假设我有:
Person Movie Rating
Sally Titanic 4
Bill Titanic 4
Rob Titanic 4
Sue Cars 8
Alex Cars **9**
Bob Cars 8
正如你所看到的,亚历克斯有一个矛盾。所有相同的电影应该有相同的排名,但 Alex 的数据条目有误。我该如何使用R来解决这个问题?我想了一会儿,但想不通。我必须在 Excel 中手动完成吗? R上是否有一个命令可以返回两列之间存在数据矛盾的所有情况?
也许我可以让 R 进行布尔检查,看所有电影案例是否与其第一次迭代的第一个评级相匹配?对于所有返回“否”的情况,我可以手动查看吗?我该如何编写这个函数?
Thanks
这是一个data.table
解决方案
定义函数
Myfunc <- function(x) {
temp <- table(x)
names(temp)[which.max(temp)]
}
library(data.table)
创建具有正确评级的列(通过引用)
setDT(df)[, CorrectRating := Myfunc(Rating), Movie][]
# Person Movie Rating CorrectRating
# 1: Sally Titanic 4 4
# 2: Bill Titanic 4 4
# 3: Rob Titanic 4 4
# 4: Sue Cars 8 8
# 5: Alex Cars 9 8
# 6: Bob Cars 8 8
或者如果您想删除“差”评级
df[Rating == CorrectRating][]
# Person Movie Rating CorrectRating
# 1: Sally Titanic 4 4
# 2: Bill Titanic 4 4
# 3: Rob Titanic 4 4
# 4: Sue Cars 8 8
# 5: Bob Cars 8 8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)