如何在保留列表名称和值的同时扁平化一列列表? [r]

问题描述 投票:0回答:1

我已经阅读了4-5个类似的问题,但是它们的情况有所不同,因此我无法弄清楚如何将阅读的内容应用于我的情况。

我有一个(公共)数据框,其中最后一列是列表:

enter image description here

单击放大镜显示以下结构:enter image description here

[当我unnest()时,我丢失度量标准名称(即visitshits等):enter image description here

如何在保留指标名称的同时平展该列表?

样本数据:

structure(list(fullVisitorId = c("2248281639583218707", "8647436381089107732", 
"2055839700856389632", "0750846065342433129", "0573427169410921198"
), date = c("20170801", "20170801", "20170801", "20170801", "20170801"
), visitStartTime = c(1501583974L, 1501616585L, 1501583344L, 
1501573386L, 1501651467L), totals = list(list(visits = 1L, hits = 1L, 
    pageviews = 1L, timeOnSite = NA_integer_, bounces = 1L, transactions = NA_integer_, 
    transactionRevenue = NA_integer_, newVisits = 1L, screenviews = NA_integer_, 
    uniqueScreenviews = NA_integer_, timeOnScreen = NA_integer_, 
    totalTransactionRevenue = NA_integer_, sessionQualityDim = 1L), 
    list(visits = 1L, hits = 1L, pageviews = 1L, timeOnSite = NA_integer_, 
        bounces = 1L, transactions = NA_integer_, transactionRevenue = NA_integer_, 
        newVisits = 1L, screenviews = NA_integer_, uniqueScreenviews = NA_integer_, 
        timeOnScreen = NA_integer_, totalTransactionRevenue = NA_integer_, 
        sessionQualityDim = 1L), list(visits = 1L, hits = 1L, 
        pageviews = 1L, timeOnSite = NA_integer_, bounces = 1L, 
        transactions = NA_integer_, transactionRevenue = NA_integer_, 
        newVisits = 1L, screenviews = NA_integer_, uniqueScreenviews = NA_integer_, 
        timeOnScreen = NA_integer_, totalTransactionRevenue = NA_integer_, 
        sessionQualityDim = 1L), list(visits = 1L, hits = 1L, 
        pageviews = 1L, timeOnSite = NA_integer_, bounces = 1L, 
        transactions = NA_integer_, transactionRevenue = NA_integer_, 
        newVisits = 1L, screenviews = NA_integer_, uniqueScreenviews = NA_integer_, 
        timeOnScreen = NA_integer_, totalTransactionRevenue = NA_integer_, 
        sessionQualityDim = 1L), list(visits = 1L, hits = 1L, 
        pageviews = 1L, timeOnSite = NA_integer_, bounces = 1L, 
        transactions = NA_integer_, transactionRevenue = NA_integer_, 
        newVisits = NA_integer_, screenviews = NA_integer_, uniqueScreenviews = NA_integer_, 
        timeOnScreen = NA_integer_, totalTransactionRevenue = NA_integer_, 
        sessionQualityDim = 1L))), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))
r list dataframe tidyr flatten
1个回答
0
投票

tidyr::unnest_wider()是您想要的吗?

tidyr::unnest_wider(sample_data,totals)

# A tibble: 5 x 16
  fullVisitorId date  visitStartTime visits  hits pageviews timeOnSite bounces transactions transactionReve~ newVisits screenviews
  <chr>         <chr>          <int>  <int> <int>     <int>      <int>   <int>        <int>            <int>     <int>       <int>
1 224828163958~ 2017~     1501583974      1     1         1         NA       1           NA               NA         1          NA
2 864743638108~ 2017~     1501616585      1     1         1         NA       1           NA               NA         1          NA
3 205583970085~ 2017~     1501583344      1     1         1         NA       1           NA               NA         1          NA
4 075084606534~ 2017~     1501573386      1     1         1         NA       1           NA               NA         1          NA
5 057342716941~ 2017~     1501651467      1     1         1         NA       1           NA               NA        NA          NA
# ... with 4 more variables: uniqueScreenviews <int>, timeOnScreen <int>, totalTransactionRevenue <int>, sessionQualityDim <int>
© www.soinside.com 2019 - 2024. All rights reserved.