我有类似的数据集:
df_out <- data.frame(
"name" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"Factor1"=rep(c("A","B","C"),times= c(2,1,5)),
"col3"=rep(c("T","S"),times= c(2,6)),
"col4"=rep(c("E","D"),times= c(6,2)))
df_out
我想对所有列进行变异,并根据它们的计数为它们分配新值,因此对于所有列,我希望出现频率最高的值为共识值,其余所有值为非共识值,NA保持不变。
df_out2 <- data.frame(
"name" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"Factor1"=rep(c("non-consensus","consensus"),times= c(3,5)),
"col3"=rep(c("non-consensus","consensus"),times= c(2,6)),
"col4"=rep(c("consensus","non-consensus"),times= c(6,2)))
df_out2
任何帮助都很感激。
3条答案
按热度按时间ddrv8njm1#
你可以
创建于2022年12月11日,使用reprex v2.0.2
h9vpoimq2#
一种基本R方法:
zlhcx6iw3#
下面是一个使用透视的解决方案:关键点是将分组变量设置在正确的位置,并删除
n
以获得所需的解:add_count
与group_by(...) and mutate
相同