Удалить определенные строки в R - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть фрейм данных, где я хотел бы удалить определенные строки.Я хотел бы удалить строку, в которой есть слово "Référence" и 3 строки под строкой "Référence".См. Мой пример здесь.

Я думаю, что должен использовать функцию grepl.

Спасибо за вашу помощь.

Макс.

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Вы можете поднастроить данные таким образом, чтобы удалить все строки со словом Référence:

data <-data [! (Data $ column1 == "Référence"),] </p>

Очевидно, подставьте data для имени вашего фрейма данных, который вы используете.

0 голосов
/ 13 декабря 2018

Вы должны использовать 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

Обобщение

Если вы хотите удалить N строк после o перед набором конкретных строк, выполните:

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

, где N - целое число.Если N положительно, оно удалит N строк после строк с «ссылкой».Если N отрицательно, это удалит N предыдущих строк.

0 голосов
/ 11 декабря 2018

Из примера кажется, что вы хотите удалить строки с 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, но и всестрока!

...