Unnest Google Analytics分析嵌套数据DPLYR

问题描述

我正在研究Google Analytics(分析)示例数据,它直接来自BigQuery。

数据源-> https://support.google.com/analytics/answer/7586738?hl=en

数据具有许多嵌套列,类型为“列表”。如何取消嵌套这些列并调整数据形状以进行平滑分析?

使用unnest()会以更长的形状打开整个列,并删除列表中数据的列名。很难在没有列名的情况下对数据进行分析和可视化。还是通过其他方式查看列表中的这些列并进行访问?

编辑:我想取消嵌套列的嵌套而不会丢失名称

A snippet of columns and code that I used

谢谢。

解决方法

如果我了解您的问题,我不确定100%。当然,带有嵌套列的数据帧可能会令人不快。仍然是显示数据的一种非常有效的方法。由于我不确定您要分析数据的哪一部分,或者不确定data.frame中的列表的样子(我不想下载数据),我的答案不会太具体。

但是也许您只能将数据缩减为分析所需的变量,并相应地调整其形状……也​​许像这样……

x <- dplyr::tibble(ID=c(1,2,3),VAR1=list(c(1,3,4),c(3,c(1,1,2))) 
# A tibble: 3 x 2
     ID VAR1     
  <dbl> <list>   
1     1 <dbl [4]>
2     2 <dbl [4]>
3     3 <dbl [4]>

lapply(seq(1,nrow(x)),function(idx){
    dplyr::as_tibble(x$VAR1[[idx]]) %>%
        dplyr::mutate(ID=x$ID[idx])}) %>%
    dplyr::bind_rows()

# A tibble: 12 x 2
   value    ID
   <dbl> <dbl>
 1     1     1
 2     2     1
 3     3     1
 4     4     1
 5     3     2
 6     3     2
 7     3     2
 8     3     2
 9     1     3
10     3     3
11     1     3
12     2     3

更新:保留名称

保留名称的方法与上述方法非常相似。最大的区别是使用dplyr::tibble代替dplyr::as_tibble(不知道为什么我首先使用后者)。

# some fake data    
x <- dplyr::tibble(ID=c(1,4) %>% magrittr::set_names(c("A","B","C","D")),3) %>% magrittr::set_names(c("E","F","G","H")),2) %>% magrittr::set_names(c("I","J","K","L")))) 

# unnesting variable
y <- lapply(seq_len(nrow(x)),function(idx){
  dplyr::tibble(VAR1=x$VAR1[[idx]],ID=x$ID[idx])}) %>%
  dplyr::bind_rows()

> y$VAR1
A B C D E F G H I J K L 
1 2 3 4 3 3 3 3 1 3 1 2 
,

我使用了以下答案-

数据%>% unnest_wider(nested_column,names_sep =“ _”)