Используйте table () внутри фреймов данных, хранящихся в списке, для создания новых фреймов данных - PullRequest
0 голосов
/ 06 марта 2020

У меня есть датафрейм ниже:

library lubridate

eventtime<-c("2020-02-07 22:06:00","2020-02-07 22:00:00","2020-02-07 21:46:00")
eventvalue<-c("home","work",'exit')
geof<-data.frame(eventtime,eventvalue)

Затем я использую список для их хранения и присваиваю элементы списка различным data.frames, используя:

library(lubridate)
library(tidyverse)

list1 <- geof %>%
  split(.$eventvalue) %>%
  bind_rows() %>%
  mutate(EventHour = hour(eventtime)) %>%
  split(.$eventvalue)

for (i in names(list1)) setNames(assign(i, data.frame(list1[[i]])), names(list1))

Я бы хотел затем использовать table() на основе EventHour для каждого кадра данных, чтобы создавать новые кадры данных с частотой каждого EventHour, а затем переименовывать эти столбцы

#table the events by count of hours
tablegeh<-data.frame(table(home$EventHour))

colnames(tablegeh)<-c("Hour","Frequency")

1 Ответ

2 голосов
/ 06 марта 2020

Вы можете использовать lapply:

lapply(list1, function(x) table(x$EventHour))
#> $exit
#> 21 
#>  1 
#>
#> $home
#> 22 
#>  1 
#>
#> $work
#> 22 
#>  1 

Очевидно, у вас есть только одна запись в каждом фрейме данных, поэтому «таблицы» не очень похожи на таблицы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...