Подход dplyr, чтобы получить номер последней строки с положительным значением - PullRequest
0 голосов
/ 08 ноября 2018
library(tidyverse)
df <- tibble(a = c(1, 2, 3, 0, 5, 0, 7, 0, 0, 0)) %>% print()
df[1:max(which(df$a>0)),]

Этот маленький фрагмент кода выше определяет, что 7-я строка df является последней строкой, содержащей положительное значение, и фильтрует каждую строку после этой 7-й строки из фрейма данных.

Я иду от этого

# A tibble: 10 x 1
       a
   <dbl>
 1    1.
 2    2.
 3    3.
 4    0.
 5    5.
 6    0.
 7    7.
 8    0.
 9    0.
10    0.

к этому

# A tibble: 7 x 1
      a
  <dbl>
1    1.
2    2.
3    3.
4    0.
5    5.
6    0.
7    7.

Как я могу выполнить это df[1:max(which(df$a>0)),], используя сленг dplyr tidyverse? Мне нужно выучить базу R, и будет , но сейчас я должен сделать это в тидиверсе.

1 Ответ

0 голосов
/ 08 ноября 2018

Мы можем использовать slice

library(tidyverse)

df %>%
  slice(1:max(which(a > 0)))


#      a
#   <dbl>
#1     1
#2     2
#3     3
#4     0
#5     5
#6     0
#7     7

или filter, где мы выбираем строки, которые меньше max индекса a > 0.

df %>%
  filter(row_number() <= max(which(a > 0)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...