想象一个数据集:
df1 <- tibble::tribble(~Client, ~Client_ID, ~Year, ~NPurchases, ~Age, ~Sex, ~Hobby,
"Alex Smith", 88888, 2022, NA, 30, "Male", "",
"Alex Smith", 88888, 2022, 45, 30, "Male", "Stamps",
"Alex Smith", 88888, 2021, 32, 29, "Male", "Stamps",
"Eugene Hugs", 788272, 2022, 2, 19, "Male", "Cats")
或者,可视化表示的相同数据集:
核心列是Client_ID和Year。例如,Alex Smith有两个2022的输入。您能否建议一些好方法:
1.删除缺失值较多的行
1.查找具有不同缺失数据的重复行,查看它们(以确定是否存在错误),然后删除数据较少的行。
任何好的建议都将非常感谢:)
例如,我的即时想法是:
unique(rbindlist(list(df1))[!is.na(NPurchases), .(Client, Client_ID, Year, Age, NPurchases, Sex, Hobby)])
输出:
但我确信应该有更通用、更整洁的方法:)
预期输出:
1.对于第一种变体:
1.对于第二种变型:类似的解决方案,将提供它删除的行上的数据。
dplyr有一个很棒的解决方案,你能建议其他好的解决方案吗?
2条答案
按热度按时间jfewjypa1#
或者,您可以尝试以下不带filter_at的代码
创建于2023年1月21日,使用reprex v2.0.2
11dmarpk2#
请尝试
dplyr
中的filter_at
函数创建于2023年1月21日,使用reprex v2.0.2