问题描述
我正在寻找一种方法来计算每个组中最常用的名称,然后将该组中的所有名称更改为最常用的名称,或者使用最常用的名称创建一个新列。在数据集中,频繁名称可能存在联系,因此在这些情况下,我希望它选择任何一个联系名称。例如:
示例数据如下所示:
first_name = c("John","John","John Smith","Linda Dawn","Linda","Jack","Jack B","Jack B")
id = c(1,1,2,3,3)
dt = data.table(cbind(first_name,id))
first_name id
1: John 1
2: John 1
3: John Smith 1
4: Linda Dawn 2
5: Linda Dawn 2
6: Linda 2
7: Linda 2
8: Linda Dawn 2
9: Jack 3
10: Jack 3
11: Jack B 3
12: Jack B 3
我数据集中的名字也可能包含中间名。
我尝试过使用 DescTools::Mode()
函数,如果在最常用的名称中没有联系,该函数效果很好。使用这种方法,我得到以下输出:
dt[,first_name_new := Mode(first_name),by = id]
first_name id first_name_new
1: John 1 John
2: John 1 John
3: John Smith 1 John
4: Linda Dawn 2 Linda Dawn
5: Linda Dawn 2 Linda Dawn
6: Linda 2 Linda Dawn
7: Linda 2 Linda Dawn
8: Linda Dawn 2 Linda Dawn
9: Jack 3 <NA>
10: Jack 3 <NA>
11: Jack B 3 <NA>
12: Jack B 3 <NA>
有谁知道如何让 <NA>
表示 Jack 或 Jack B,或者其他技术来执行此任务?
提前致谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)