r - 使用 R 将变量添加到列表中的列表中的数据框
问题描述
我有一个关于新闻文章的社交媒体数据列表,该列表保存在每个新闻媒体的列表中。每次收集更多数据时,都会添加该列表。到目前为止,数据已被添加到每个列表中 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
不同
对于简化此过程或向最终数据集添加时间戳变量的任何帮助将不胜感激。
解决方案
也许在取消嵌套之前将时间戳添加到每个数据帧会更简单?
buzzfeed200125 <- mapply(function(x, y){ x$results$time <- rep(y, nrow(x$results)); x;},
buzzfeed200125, collection.time, SIMPLIFY = FALSE)
这应该为您提供每行所需的时间戳输出。
推荐阅读
- css - 产品页面woocomerce上的文件图标不会消失
- python-3.x - 如何使用python将xml标签转换为字典?
- php - 当表名类似于 SQL-Server 中的“创建/删除状态”时,如何修复查询执行?
- javascript - 如何通过正则表达式对以下字符串进行分组
- java - 如何在flutter中从其他项目访问java本机方法
- ios - 单击按钮时,Facebook 登录对话框会自动关闭
- java - readOnly=true 和 TransactionType Never 有什么区别?
- django - 姜戈 | 创建新的配置文件对象时出现 SuspiciousFileOperation 错误
- linux - 如何从一个目录中读取文件并使用 shell 脚本将该文件作为另一个存储过程的输入?
- php - WooCommerce 在结帐时选择带有 Optgroup 的下拉菜单