【问题标题】:Build a dataframe of nested tibbles in R?在 R 中构建嵌套小标题的数据框?
【发布时间】:2018-12-16 18:51:16
【问题描述】:

我有几个小玩意儿:

1:

structure(list(contacts = c(151, 2243, 4122, 6833, 76, 123)), .Names = "contacts", row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

2:

structure(list(image_names = c("/storage/emulated/0/Pictures/1.png", 
"/storage/emulated/0/Pictures/10.png", "/storage/emulated/0/Pictures/2.png", 
"/storage/emulated/0/Pictures/3.png", "/storage/emulated/0/Pictures/4.png", 
"/storage/emulated/0/Pictures/5.png")), .Names = "image_names", row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

3:

structure(list(phone_number = c(22881, 74049, 74049, 22881, 22881, 
22881), isInContact = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), 
    callDuration = c(1, 0, 0, 71, 13, 54), Date = structure(c(17689, 
    17689, 17689, 17690, 17690, 17690), class = "Date"), Time = structure(c(76180, 
    77415, 84620, 27900, 28132, 29396), class = c("hms", "difftime"
    ), units = "secs")), .Names = c("phone_number", "isInContact", 
"callDuration", "Date", "Time"), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

考虑到对于每组这些数据帧,我可以获得一个标识符,比如 UUID。

我想构建一个大型数据框对象,其中标识符将是用户的 uuid,所有其他列将是嵌套的小标题:

UUID contacts images    call_logs
123  <tibble> <tibble>  <tibble>
456  <tibble> <tibble>  <tibble>

请告知我该如何构建这样的东西,我正在尝试使用map_dfr,但没有运气。

【问题讨论】:

    标签: r dataframe functional-programming dplyr tibble


    【解决方案1】:

    我们可以将小标题放在list 中以创建单行

    tblN <- tibble(contacts = list(tbl1), images = list(tbl2), 
                   call_logs = list(tbl3))
    

    不清楚是否应该为不同的“UUID”复制相同的数据集。

    list(`123` = tblN, `456` = tblN) %>%
                    bind_rows(.id = 'UUID')
    

    【讨论】:

    • 每一行都有自己的 uuid - 每个用户一行包含他的所有设备数据。
    • @steves 谢谢,但是你如何获得每一行的每个数据集。它来自循环吗?
    • 我有很多文件,每个文件都是一个 JSON 文件。我只是把它们全部提取出来,为每个用户提取它的 UUID,你一如既往地解决了我的问题!现在我得到每个用户的一行,所有用户设备数据作为小标题列表的列。
    • 我认为我们可以自动化提取过程
    • @steves 如果你有很多 JSON 文件,可能会循环使用 map 的文件,在循环内进行提取和转换,使用 @987654326 设置 list 元素的名称@ 并按此处所示绑定行
    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 2021-12-15
    • 2023-03-20
    • 1970-01-01
    • 2023-03-21
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多