这是我的示例数据集:
Name Course Cateory
1: Jason ML PT
2: Jason ML DI
3: Jason ML GT
4: Jason ML SY
5: Jason DS SY
6: Jason DS DI
7: Nancy ML PT
8: Nancy ML SY
9: Nancy DS DI
10: Nancy DS GT
11: James ML SY
12: John DS GT
我想删除重复的行,以便在数据框中具有唯一的行。删除重复行是基于列中的值category
。对值的偏好category
列按以下顺序给出:{'PT','DI','GT','SY'}。
我的输出数据框如下所示:
Name Course Cateory
1: Jason ML PT
2: Jason DS DI
3: Nancy ML PT
4: Nancy DS DI
5: James ML SY
6: John DS GT
目前,我正在使用以下组合for
循环和if
健康)状况。由于输入数据帧很大(一千万行),因此需要很长时间。有没有更好、更有效的方法来执行相同的操作?
这是一个满足您要求的代码片段:
df$Category <- factor(df$Category, levels = c("PT", "DI", "GT", "SY"))
df <- df[order(df$Category),]
df[!duplicated(df[,c('Name', 'Course')]),]
输出:
Name Course Category
Jason ML PT
Nancy ML PT
Jason DS DI
Nancy DS DI
John DS GT
James ML SY
想法是我们根据优先级结构进行排序。然后我们应用独特的操作,这将返回第一个匹配项。回报将是我们想要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)