簡體   English   中英

如果 2 個特定列 (R) 中有零,則刪除行

[英]remove row if there are zeros in 2 specific columns (R)

我有一個這樣的數據框

    col1 col2 col3 col4
row1   1   0     6    7
row2   5   7     0    6
row3   0   0     4    6

我只需要刪除第 1 列和第 2 列中包含零的行。到目前為止,我已經設法刪除了所有包含零的列:

mk<-mk[apply(mk!=0, 1, all),]

但不知道如何專門限制為僅在第 1 列和第 2 列中具有零的行。

預期結果:

    col1 col2 col3 col4
row1   1   0     6    7
row2   5   7     0    6

我們可以使用rowSums創建邏輯向量。 即子集'mk'的前兩列,檢查它是否等於0,獲取邏輯矩陣的rowSums並轉換為< 2的邏輯向量,將其用作行索引以對行進行子集化

mk[rowSums(mk[, 1:2] == 0) < 2,]
#     col1 col2 col3 col4
#row1    1    0    6    7
#row2    5    7    0    6

或者使用apply

mk[!apply(mk[, 1:2]==0, 1, all),]
#     col1 col2 col3 col4
#row1    1    0    6    7
#row2    5    7    0    6

或者與any

mk[apply(mk[, 1:2], 1, any),]

數據

mk <- structure(c(1L, 5L, 0L, 0L, 7L, 0L, 6L, 0L, 4L, 7L, 6L, 6L), 
.Dim = 3:4, .Dimnames = list(
    c("row1", "row2", "row3"),
    c("col1", "col2", "col3", "col4"
    )))

暫無
暫無

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

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