代码之家  ›  专栏  ›  技术社区  ›  SteveS

在r中构建嵌套tibbles的数据帧?

  •  1
  • SteveS  · 技术社区  · 6 年前

    我有几个藏语:

    一:

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

    二:

    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"))
    

    三:

    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,而所有其他列将是嵌套的tibbles:

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

    请告诉我怎样才能建造这样的东西,我正在尝试使用 map_dfr 没有运气。

    1 回复  |  直到 6 年前
        1
  •  1
  •   akrun    6 年前

    我们可以把藏书放在 list 创建单行

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

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

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