У меня есть этот набор данных:
dat <- structure(list(Date.1 = c(NA, NA, NA, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7), Date.2 = c(NA, NA, NA, 7, 7, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6), Date.3 = c(NA, NA, NA, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8), Date.4 = c(NA, NA, NA, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7), Date.5 = c(NA, NA, NA, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
), Date.6 = c(NA, NA, NA, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7),
Date.7 = c(NA, NA, NA, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
), Date.8 = c(NA, NA, NA, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7), Date.9 = c(NA, NA, NA, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6), Date.10 = c(NA, NA, NA, 6, 6, 8, 8, 8, 11, 8, 8, 8,
8, 8, 8), Date.11 = c(NA, NA, NA, 8, 8, NA, NA, NA, NA, NA,
7, 7, 7, 21, 7), Date.12 = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
), Date.13 = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_), Date.14 = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_), Date.15 = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
)), .Names = c("Date.1", "Date.2", "Date.3", "Date.4", "Date.5",
"Date.6", "Date.7", "Date.8", "Date.9", "Date.10", "Date.11",
"Date.12", "Date.13", "Date.14", "Date.15"), row.names = c(NA,
15L), class = "data.frame")
Вид:
> dat
Date.1 Date.2 Date.3 Date.4 Date.5 Date.6 Date.7 Date.8 Date.9 Date.10 Date.11 Date.12 Date.13 Date.14 Date.15
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
4 7 7 6 8 7 7 7 7 7 6 8 NA NA NA NA
5 7 7 6 8 7 7 7 7 7 6 8 NA NA NA NA
6 7 6 8 7 7 7 7 7 6 8 NA NA NA NA NA
7 7 6 8 7 7 7 7 7 6 8 NA NA NA NA NA
8 7 6 8 7 7 7 7 7 6 8 NA NA NA NA NA
9 7 6 8 7 7 7 7 7 6 11 NA NA NA NA NA
10 7 6 8 7 7 7 7 7 6 8 NA NA NA NA NA
11 7 6 8 7 7 7 7 7 6 8 7 NA NA NA NA
12 7 6 8 7 7 7 7 7 6 8 7 NA NA NA NA
13 7 6 8 7 7 7 7 7 6 8 7 NA NA NA NA
14 7 6 8 7 7 7 7 7 6 8 21 NA NA NA NA
15 7 6 8 7 7 7 7 7 6 8 7 NA NA NA NA
Я хочу проверить данные по строкам и извлечь только те строки, которые содержат хотя бы одну ячейку размером более 8 .
Следовательно, в приведенном выше примере следует сообщать строки 9
и 14
, поскольку они обе содержат одну ячейку с номером больше 8.
Я пробовал много, много вариантов и ни один не работает .. Просто перечислим несколько из них:
dat %>% rowwise %>% dplyr::filter(. > 8)
dat %>% lapply(dplyr::filter, . > 8)
dat %>% dplyr::filter_at(vars(starts_with("Date)), any_vars(. > 8))
dat %>% lapply(function(x) dplyr::filter(x > 8))
И, похоже, в dplyr
это вообще невозможно, если я правильно понимаю этот пост .
Делать все вручную было бы так:
test <- dat
test %>% filter(Date.1 > 8 )
test %>% filter(Date.2 > 8 )
test %>% filter(Date.3 > 8 )
test %>% filter(Date.4 > 8 )
test %>% filter(Date.5 > 8 )
test %>% filter(Date.6 > 8 )
test %>% filter(Date.7 > 8 )
test %>% filter(Date.8 > 8 )
test %>% filter(Date.9 > 8 )
test %>% filter(Date.10 > 8 )
test %>% filter(Date.11 > 8 )
test %>% filter(Date.12 > 8 )
test %>% filter(Date.13 > 8 )
test %>% filter(Date.14 > 8 )
test %>% filter(Date.15 > 8 )
Есть ли способ эффективно сделать это в base R
или dplyr
или любом другом package
?