簡體   English   中英

R - 選擇連續出現的數字

[英]R - choose the number which appears most in a row

我有一個df 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但是找不到適合這種情況的函數。 真的很感激任何幫助

使用table另一種選擇,

apply(test, 1, function(i) as.numeric(names(sort(-table(i)))[1]))
#[1] 1 2 2

我們可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM