我有一个 Dataframe ,如下所示:
df <- data.frame(ID = c(1,2,3,4,5),
Total = c(1,1,2,1,2),
Ma = c(1,2,1,2,1),
Mb = c(1,2,1,2,2),
Md = c(1,2,1,2,1),
Me = c(1,1,1,2,2))
我想添加一个列来指示最大重复率,从Total
到Me
列的每一行。它应该是这样的:
rep.rate = c(1,0.6,0.8,0.8,0.6)
这些值指示每行中五列中最常见值的重复率。
6条答案
按热度按时间ct2axkht1#
你可以试试,
lskq00tm2#
下面是一个更简单的
dplyr
解决方案,它不需要用户定义的函数:第一个
ttygqcqt3#
ar7v8xwq4#
创建于2022年12月2日,使用reprex v2.0.2
kknvjkwl5#
解决此问题的步骤如下:
rowwise()
使所有操作按行进行,然后使用mutate创建新列,如下所示:max(Total:Me)
找到最大值。然后sum(across(Total:Me)== max)
找到当前行中出现最大值的次数。然后我们将此数除以5,得到所需的比例。dfddblmv6#
如果列只接受2个值,如示例数据中所示:
如果它们的值超过2个,则使用
matrixStats::rowTabulates
的矢量化解决方案: