R: создание столбца с несколькими именами переменных, когда их freq == 1 - PullRequest
1 голос
/ 07 мая 2020

Ниже приведены примеры данных и их таблица.

sample<-data.frame(mon=c("Jan","Feb","Mar","Jan","Feb","Mar","Jan","Feb","Mar"), 
             fruit=c("Orange","Orange",NA, "Apple",NA,"Apple",NA,"Berry","Berry"))
sample%>%{table(.$mon, .$fruit)}
      Apple Berry Orange
  Feb     0     1      1
  Jan     1     0      1
  Mar     1     1      0

Как создать фрейм данных, который собирает имена переменных, когда их частота == 1, как показано ниже?

  mon     types
  Jan     Orange, Apple    
  Feb     Orange, Berry
  Mar     Apple, Berry

1 Ответ

2 голосов
/ 07 мая 2020

Мы могли бы сделать group_by paste после удаления элементов NA с помощью filter

library(dplyr)
sample %>% 
  filter(!is.na(fruit)) %>% 
  group_by(mon) %>% 
  summarise(types = toString(unique(fruit)))
# A tibble: 3 x 2
#  mon   types        
#  <fct> <chr>        
#1 Feb   Orange, Berry
#2 Jan   Orange, Apple
#3 Mar   Apple, Berry 

Предполагая, что OP создает объект table, тогда мы можем преобразовать в data.frame, filter элементы, у которых 'Freq'> 0, и использовать тот же код

out <- sample%>%
          {table(.$mon, .$fruit)}
as.data.frame(out) %>% 
    filter(as.logical(Freq)) %>%  
    group_by(mon = Var1) %>% 
    summarise(types  = toString(unique(Var2)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...