У меня есть список данных социальных сетей о новостных статьях, который сохраняется в списке для каждого новостного издания. Список добавляется каждый раз, когда собирается больше данных. До настоящего времени данные добавлялись в каждый список 9 раз.
Например: это проблеск результатов одного списка
glimpse(buzzfeed200125[[1]])
List of 6
$ results :'data.frame': 100 obs. of 45 variables:
..$ author_name: chr [1:100] "Amber Jamieson, Mary Ann Georgantopoulos, Marie Telling, Zorro Maplestone, Stephanie K. Baer, Hazel Shearing" "Stephanie K. Baer, Hazel Shearing" "Jason Leopold, Anthony Cormier" "Tasneem Nashrulla" ...
..$ youtube_trending_score: logi [1:100] NA NA NA NA NA NA ...
..$ alexa_rank: int [1:100] 1942 1942 1584 4354 1541 4354 1541 1264 4288 1584 ...
..$ pinterest_shares: int [1:100] 493 8 178 13 201 0 0 15 99 0 ...
..$ num_words: int [1:100] 1559 836 1506 1351 874 1351 874 925 392 1602 ...
$ suggested_language: NULL
$ total_pages : int 71
$ total_results : num 7083
$ display_code : NULL
$ search_type : chr "domainSearch"
Как видите - результаты фактический сбор данных происходит в первую очередь в первом объекте в списке - фрейме данных с именем results
glimpse(buzzfeed200125[[1]][[1]])
Observations: 100
Variables: 45
$ author_name <chr> "Amber Jamieson, Mary Ann Georgantopoulos, Marie Telling, Zorro Maplesto…
$ alexa_rank <int> 1942, 1942, 1584, 4354, 1541, 4354, 1541, 1264, 4288, 1584, 4366, 2759, …
$ pinterest_shares <int> 493, 8, 178, 13, 201, 0, 0, 15, 99, 0, 0, 22, 8, 26, 2, 136, 0, 39, 0, 7…
$ num_words <int> 1559, 836, 1506, 1351, 874, 1351, 874, 925, 392, 1602, 392, 1366, 548, 5…
$ twitter_shares <int> 3170, 2883, 149984, 4098, 754, 2, 4, 1328, 7925, 44, 1, 5262, 5017, 8248…
$ love_count <int> 1004, 55009, 2457, 90, 33386, NA, NA, 3779, 31648, NA, NA, 9226, 312, 12…
$ language <chr> "en", "en", "en", "en", "en", "en", "en", "en", "en", "en", "en", "en", …
У меня также есть список меток времени POSIX для каждого часа, когда были собраны данные
collection.time
collection.time[1:9]
[[1]]
[1] "2020-01-31 08:44:23 EST"
[[2]]
[1] "2020-01-31 10:50:01 EST"
[[3]]
[1] "2020-01-31 11:50:01 EST"
[[4]]
[1] "2020-01-31 12:50:00 EST"
[[5]]
[1] "2020-01-31 13:50:01 EST"
[[6]]
[1] "2020-01-31 14:50:01 EST"
[[7]]
[1] "2020-01-31 15:50:01 EST"
[[8]]
[1] "2020-01-31 16:50:01 EST"
[[9]]
[1] "2020-01-31 17:50:01 EST"
Я хочу добавить метку времени в качестве переменной в кадры данных результатов, чтобы можно было раскрутить списки и преобразовать их в панель временных рядов.
Моя цель для конечного фрейма данных выглядит так:
glimpse(df)
df : data.frame: 37800 obs. of 45 variables:
.$ time.stamp chr [1:37800] "2020-01-31 08:44:23 EST" "2020-01-31 08:44:23 EST" "2020-01-31 08:44:23 EST" "2020-01-31 08:44:23 EST" "2020-01-31 08:44:23 EST" ...
.$ author_name: chr [1:37800] "Amber Jamieson, Mary Ann Georgantopoulos, Marie Telling, Zorro Maplestone, Stephanie K. Baer, Hazel Shearing" "Stephanie K. Baer, Hazel Shearing" "Jason Leopold, Anthony Cormier" "Tasneem Nashrulla" ...
.$ youtube_trending_score: logi [1:37800] NA NA NA NA NA NA ...
Мне удалось извлечь и создать большой фрейм данных из всех источников, но без добавления переменной time.stamp. Вот мой код:
load(file = "source_list")
source_list - это список, который содержит списки для каждого источника новостей
Итак, структура:
source_list[[source]][[time collected]][[results data frame]]
tab1 <- tibble(source_list) %>% unnest_wider(source_list) %>% unnest(results)
tab1
# A tibble: 37,795 x 50
author_name youtube_trendin… alexa_rank pinterest_shares num_words twitter_shares love_count language
<chr> <dbl> <int> <int> <int> <int> <int> <chr>
1 The Babylo… NA 9019 11 251 22991 3130 en
2 The Babylo… NA 23970 9 306 696 1551 en
3 The Babylo… NA 17002 13 343 2504 1687 en
4 The Babylo… NA 19717 10 233 11219 2897 en
5 The Babylo… NA 13077 24 241 8180 1418 en
6 The Babylo… NA 47714 4 228 578 395 en
7 The Babylo… NA 22741 5 261 3613 2132 en
8 The Babylo… NA 14996 12 231 1646 69 en
9 The Babylo… NA 26529 2 350 3773 1265 en
10 The Babylo… NA 17002 10 277 6995 6863 en
# … with 37,785 more rows, and 42 more variables
Но я не могу понять, как правильно добавить метки времени в качестве переменной.
Я пытался использовать rep
для повторения меток времени правильное количество раз, но пока ничего не работает.
Это выглядело примерно так:
time.stamp <- rep(rep(collection.time[1:9], each = 100),378)
результирующий объект не был той же длины, что и tab1
фрейм данных
Любая помощь в упрощении этого процесса или добавлении переменной отметки времени в окончательный набор данных будет с благодарностью.