Таблица частот с общими значениями 5 таблиц - PullRequest
0 голосов
/ 17 января 2019

У меня есть 5 фреймов данных, и мне нужно проанализировать только первый столбец. Из них я должен получить таблицу частот их общих слов (не обязательно всех фреймов данных, например, слово может появляться только в двух или более фреймах данных).

Тогда я должен получить таблицу частот общих слов ВСЕХ фреймов данных

Я только что попытался сделать цикл, но мне кажется, что это очень сложно. Кроме того, датафреймы имеют разные размеры. Я не нашел никакой полезной функции.

Тогда я попытался сделать

lst1 <- list(a,b,c,d,e)  
newdat <- stack(setNames(lapply(lst1, "[", 1), seq_along(lst1)))[2:1]  
library(dplyr)  
newdat %>% group_by(val) %>% filter(uniqueN(ind) > 1) %>% count(val)

но выдает ошибку

> stack(setNames(lapply(lst1, "[", 1), seq_along(lst1)))
Error in stack.default(setNames(lapply(lst1, "[", 1), seq_along(lst1))):
   at least one vector element is required

Спасибо

1 Ответ

0 голосов
/ 17 января 2019

Вот мое решение с использованием purrr & dplyr:

library(purrr)
library(dplyr)

lst1 <- list(mtcars=mtcars, iris=iris, chick=chickwts, cars=cars, airqual=airquality)  

lst1 %>%
  map_dfr(select, value=1, .id="df") %>%                # select first column of every dataframe and name it "value"
  group_by(value) %>% 
  summarise(freq=n(),                                   # frequency over all dataframes
            n_df=n_distinct(df),                        # number of dataframes this value ocurrs
            dfs = paste(unique(df), collapse=",")) %>% 
  filter(n_df > 1) %>% 
  filter(n_df == 5)                                     # if value has to be in all 5 dataframes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...