簡體   English   中英

刪除R中的特定行

[英]Remove specific rows in R

我有一個要刪除特定行的數據框。 我想刪除有“Référence”字樣的行和“référence”行下的3行。 在這里查看我的示例

我想我必須使用grepl函數。

謝謝您的幫助。

最大。

從該示例看來,您似乎要刪除帶有NA的行。 使用na.omit很容易做到:

df <- data.frame(
  x = c(NA, 1, 2, 3, 4),
  y = c(10, NA, 18, 22, NA)
)
df
   x  y
1 NA 10
2  1 NA
3  2 18
4  3 22
5  4 NA

現在,省略所有缺少值的行:

df2 <- na.omit(df)
df2
  x  y
3 2 18
4 3 22

但是請注意, na.omit不僅會刪除帶有NA的單元格, na.omit刪除整行!

您可以像這樣對數據進行子集刪除,以刪除單詞Référence所有行:

數據<-data [!(data $ column1 ==“Référence”),]

顯然,將data替換為您使用的數據框的名稱。

您應該使用grep ,而不是grepl 使用grep您將獲得與模式匹配的行索引,而使用grepl您將獲得布爾向量。 您可以這樣做:

rowIndexes = grep(x = df$col1, pattern = "refer")

df = df[-c(rowIndexes, rowIndexes+1, rowIndexes+2),]

例:

> df
          a   b  c   d  e
1     00100  44  5  69 fr
2     refer  34 35   7 df
3  thisalso  46 15 167 as
4   thistoo  46 15 167 as
5     00100  11  5  67 uu
6     00100 563 25  23 tt
7     00100  44  5  69 fr
8     refer  34 35   7 df
9  thisalso  46 15 167 as
10  thistoo  11  5  67 uu
11    00100 563 25  23 tt
12    00100  44  5  69 fr
13    refer  34 35   7 df
14 thisalso  46 15 167 as
15  thistoo  11  5  67 uu
16    00100 563 25  23 tt
17    00100 563 25  23 tt
18    00100 563 25  23 tt

> rowIndexes = grep(x = df$col1, pattern = "refer")
> df = df[-c(rowIndexes, rowIndexes+1, rowIndexes+2),]

> df

       a   b  c  d  e
1  00100  44  5 69 fr
5  00100  11  5 67 uu
6  00100 563 25 23 tt
7  00100  44  5 69 fr
11 00100 563 25 23 tt
12 00100  44  5 69 fr
16 00100 563 25 23 tt
17 00100 563 25 23 tt
18 00100 563 25 23 tt

概括

如果要在一組特定行之前的o后面刪除N行,請執行以下操作:

rowIndexes = grep(x = df$col1, pattern = "refer")
N = 2
indexesToRemove = sapply(rowIndexes, function(x){ x + (0:N) })
df = df[-indexesToRemove, ]

其中N是整數。 如果N為正,它將在帶有“ refer”的行之后刪除N行。 如果N為負,這將刪除N個先前的行。

暫無
暫無

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

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