Я гарантирую, что есть более простой способ достичь моей цели. Мне нужно посчитать не-NA значения кадра данных, сгруппированных по одному столбцу в указанном кадре данных. * Это мой первый вопрос на стеке, пожалуйста, будьте терпеливы со мной.
Вот мой текущий код:
данные испытаний:
grouping <- c(1234,5678,2359)
column1 <- c('asdf',NA,NA)
column2 <- c(NA,'asdf','asdf')
column3 <- c('asdf',NA,'asdf')
litmus <- data.frame(grouping, column1, column2, column3)
получить отдельный список групп:
distinct_groups <- as.data.frame(litmus %>% distinct(grouping))
length(distinct_groups$grouping)
выполнить цикл для подсчета значений не-NA путем группировки и помещения в список
count_non_NA = list()
for (i in 1:length(distinct_groups$grouping)){
count_non_NA[[i]]<-apply(litmus[grouping == as.numeric(distinct_groups$grouping[i]),], 2, function(x) length(which(!is.na(x))))}
вводить имена групп в список и преобразовывать их в фрейм данных
names(count_non_NA) <- distinct_groups$grouping
count_non_NA <- as.data.frame(count_non_NA)
count_non_NA