R - 选择连续出现的数字

时间:2017-04-07 13:17:46

标签: r

我有一个test

A   B   C
1   1   NA
2   NA  NA
1   2   2

我想创建另一列,比如说test$D,这是该行中出现次数最多的一个,不包括NA。我想要的df是:

A   B   C   D
1   1   NA  1
2   NA  NA  2
1   2   2   2

我一直在寻找类似于rowMeans的函数,其中na.rm = T但是找不到适合这种情况的函数。非常感谢任何帮助

2 个答案:

答案 0 :(得分:2)

使用table

的另一个选项
apply(test, 1, function(i) as.numeric(names(sort(-table(i)))[1]))
#[1] 1 2 2

答案 1 :(得分:1)

我们可以将applyMARGIN = 1一起使用来查找每行中的数字频率,并使用which.max获取最大频率数

test$D <- apply(test, 1, FUN = function(x) {
        x1 <- table(factor(x, levels = unique(x)))
          as.numeric(names(x1)[which.max(x1)])})
test$D
#[1] 1 2 2