В пакете dplyr
(версия 1.0.0) есть некоторые функции, которые могут помочь.
Предположим, ваши данные называются df
со столбцами ID
, name
, address
, а ряд столбцов начинается с last_log_june
, и возможно, что в этих столбцах существуют некоторые значения NA
.
new_df <- df %>% rowwise() %>% ## indicate you want to apply functions on rows
mutate(na_exists = ifelse(sum(is.na(c_across(starts_with("last_log_june"))))>0,1,0),
## an intermediate variable na_exists to indicate whether or not there is `NA` in any of the columns
unique_with_NA = length(unique(c_across(starts_with("last_log_june")),na.rm=T))
## if there is NA, the unique function will also count `NA` as a unique value
unique_withno_NA = unique_with_NA-na_exists
## if you don't want NA counted as an unique value, then the final result should exclude it
) %>% select (-na_exists, -unique_with_NA)
## remove the intermediate variables
использование функции c_across(starts_with("last_log_june"))
учитывает только столбцы, начинающиеся с last_log_june