Данные
Поскольку странная веб-конфигурация на работе не позволяет мне получить доступ к вашим данным, я создал три кадра данных на основе случайных чисел
set.seed(123); data_1 <- data.frame( value = runif(25, min = -0.1) )
set.seed(234); data_2 <- data.frame( value = runif(20, min = -0.1) )
set.seed(345); data_3 <- data.frame( value = runif(30, min = -0.1) )
Сначала вы можете создать список, содержащий всеваши фреймы данных:
list_df <- list(data_1, data_2, data_3)
Теперь вы можете просмотреть этот список с помощью цикла for
.Поскольку есть несколько шагов, я нахожу удобным использовать пакет dplyr
, поскольку он допускает более удобочитаемую запись:
library(dplyr)
for( i in 1:length(list_df) ){
min_row <-
list_df[[i]] %>%
mutate( id = row_number() ) %>% # add a column with row number
filter(value < 0) %>% # get the rows with negative values
summarise( min(id) ) %>% # get the first row number
as.numeric() # transform this value to a scalar (not a dataframe)
list_df[[i]] <- list_df[[i]] %>% slice(1:min_row) # get rows 1 to min_row
}
Надеюсь, это поможет!