如何用r語言刪除0太多的行呢?

時間 2021-05-30 22:28:48

1樓:FTDdata

m[rowMeans(m==0)>0.2,],m為矩陣或資料框都可以的。tips:如果m為矩陣,篩選出來只有一行,缺省會轉為向量,可以通過設定drop=FALSE來避免。

2樓:貝殼沙灘

解決問題的思路:

核心問題其實是篩選矩陣元素。

提取矩陣元素的本質是根據邏輯值TURE/FALSE來決定該行或列是否留下。於是,這個問題就變成求乙個邏輯向量,然後將這個邏輯向量放入矩陣篩選時行的位置a[行,列]。這個邏輯向量就是矩陣一行中0的個數<20%為TRUE。

那麼怎樣知道這一行0的個數是否大於20%呢?方法就不是唯一的,一種比較好的思路是將這些值按是否等於0而轉成乙個邏輯向量,因為TRUE=1,FALSR=0,這時,所有的0都變成1,所有非0的數就變成0,然後求出均數,再和0.2比較即可。

最後通過遍歷矩陣的方法,乙個行對應乙個邏輯值,再將這個邏輯值放入提取矩陣的行的位置即可。具體的操作樓上都給出了很好的例項,喜歡哪個用哪個(˙▽˙)

3樓:

rm(list=ls

())set

.seed

(888)rt

=matrix

(sample(0

:10,100

,replace=T

),nrow=10

)a=nrow(rt

)#行數b

=ncol(rt

)*0.

2#20%

c=c()

for(iin

1:a)

}rt=rt

[-c,]

不同的解法這裡試驗選取的是》=20%的資料

4樓:章丁睿

可以轉化成dataframe或者datatablelibrary

(data

.table)dt

<-fread

('a b c d e f0 0 0 0 0 10 1 1 1 1 1')dt#

>abcdef

#>1:

0000

01#>2:

0111

11dt[

rowMeans(dt

==0)>

0.2,]#

>abcdef

#>1:

000001

R 語言小白如何開展 R 語言的學習啊?

個人拙見,學任何一門程式語言,都應該遵循這樣乙個過程 1 閱讀簡單的教程,能夠做到初步上手,具體來說就是要熟悉變數 資料型別 輸入輸出以及迴圈語法 2 直接上手實戰,不會就查Google 查bing 查bbs,你遇到的問題,大部分都是前人遇到過的。推薦兩個R語言教程,乙個是北大李東風老師的講義,乙個...

求大神告知,如何用r語言畫出正態分佈密度函式

白墨 Talk is cheap.Show me your code.set.seed 1 x seq 10,15,length.out 1000 計算X N 2,1 y1 dnorm x,2,1 計算X N 2,1 y2 dnorm x,2,1 計算X N 2,4 y3 dnorm x,2,2 繪...

如何評價近期的 WannaCrypt0r 勒索病毒?

叁拾 這個病毒設計其實有很大缺陷。因為 用XP系統的人和有能力使用位元幣的人,根本沒有交集呀。大概這也是為什麼到目前為止才收了八位元幣的贖金吧。 大公尺園子 剛才看一條新聞說,好像那個黑客組織威脅要公布中俄伊朗 還有乙個忘記了 的飛彈計畫。他們如果真如他們所說的那麼厲害,不用官方,感覺民間都有可能n...