[英]Remove specific rows in R
從該示例看來,您似乎要刪除帶有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.