У меня есть следующий набор данных:
gender<-c('male' ,'male', 'male', 'male','male',
'female', 'female', 'female','female', 'female' ,'female', 'female', 'female','female')
clothes<-c('hat', 'hat', 'hat', 'shirt', 'shirt', 'hat', 'hat', 'hat', 'shirt', 'shirt', 'shirt', 'dress', 'dress', 'dress')
color<-c('blue', 'blue', 'green', 'blue', 'brown', 'green', 'brown', 'brown', 'blue', 'green', 'green', 'blue', 'green', 'green')
x<-data.frame(gender, clothes, color)
Мне нужно составить таблицу частот пола по одежде по цвету, с NA только для отсутствующих цветов. Оба пола и все уровни одежды должны быть связаны с 3 уровнями цвета. Тем не менее, для одного гендерного уровня мне не хватает одежды уровня «платье», и я не хочу, чтобы он был заполнен национальными организациями, я хочу, чтобы он вообще был опущен.
Я пытался подсчитать:
x$color<-as.factor(x$color)
x_agg<-x%>%
group_by(gender, clothes, color)%>%
tally()
И это вообще не достигает цели; Я не получаю NA для пропущенных уровней каких-либо переменных.
Когда я применяю следующий код:
library(tidyverse)
x_agg<-x%>%
group_by(gender, clothes, color)%>%
summarise(cnt=n())%>%
ungroup() %>%
complete(gender, clothes, color,
fill = list(N = 0))
Я получаю NA для мужчины - платье - всех цветов. Но то, что я хочу, это NA только для последней переменной группировки (цвета), а не для одежды и цветов. Вот так:
gender<-c('male' ,'male', 'male', 'male','male','male',
'female', 'female', 'female','female', 'female' ,'female', 'female', 'female','female')
clothes<-c('hat', 'hat', 'hat', 'shirt', 'shirt', 'shirt',
'hat', 'hat', 'hat', 'shirt', 'shirt', 'shirt', 'dress', 'dress', 'dress')
color<-c('blue', 'green', 'brown',
'blue', 'green', 'brown',
'blue', 'green', 'brown',
'blue', 'green', 'brown',
'blue', 'green', 'brown')
cnt<-c(2, 1, NA, 1, NA, 1, NA, 1, 2, 1, 2, NA, 1, 2, NA)
x_agg1<-data.frame(gender, clothes, color, cnt)
Или вот картинка:
Я думаю, что перепробовал все, что мог придумать. Были предложения по переполнению стека, но все они относились либо к группированию по одной переменной, либо к заполнению NA для всех уровней каждой отдельной переменной группировки. Но не ясно, что делать, если необходимо заполнить / сохранить только уровни одной переменной? Есть предложения?