【发布时间】:2019-05-11 23:54:49
【问题描述】:
我有一个要删除特定行的数据框。 我想删除有“Référence”字样的行和“référence”行下的 3 行。 请在此处查看我的example。
我想我必须使用 grepl 函数。
感谢您的帮助。
最大。
【问题讨论】:
我有一个要删除特定行的数据框。 我想删除有“Référence”字样的行和“référence”行下的 3 行。 请在此处查看我的example。
我想我必须使用 grepl 函数。
感谢您的帮助。
最大。
【问题讨论】:
您应该使用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 之前的行。
【讨论】:
从示例中,您似乎想删除带有 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 的单元格,还会删除整行!
【讨论】:
您可以像这样子集数据以删除带有单词Référence的所有行:
数据
显然,将 data 替换为您使用的数据框的名称。
【讨论】: