小编Kha*_*hir的帖子

递归地将“unnest_wider()”应用于所有列,直到不再有嵌套列表列为止?

这个问题的后续问题:是否可以递归应用unnest_wider,直到不再剩下列表列?

我正在使用一个深度嵌套的数据集,其中一个列表列具有单个级别(一次unnest_wider调用即可解决问题);但另一个有 228-237 个不同深度的列表列。我想“分解”整个数据集,使其整洁,所有列都位于层次结构的顶部。

这是一个示例:

structure(list(fullVisitorId = c("2248281639583218707", "8647436381089107732"
), date = c("20170801", "20170801"), visitStartTime = c(1501583974L, 
1501616585L), 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, …
Run Code Online (Sandbox Code Playgroud)

r flatten dataframe tidyr purrr

6
推荐指数
1
解决办法
1404
查看次数

如何使用 dplyr 语法选择带有 bigrquery 的嵌套字段?

如果可能,我想bigrquery使用dplyr语法(而不是 SQL)探索 Google Analytics 360 数据。要点是我想了解用户旅程——我有兴趣在用户级别(甚至跨会话)找到最常见的页面序列。

我以为我可以这样做:

sample_query <- ga_sample %>%
  select(fullVisitorId, date, visitStartTime, totals, channelGrouping,
  hits.page.pagePath) %>% 
  collect()
Run Code Online (Sandbox Code Playgroud)

但我收到一个hits.page.pagePath未找到的错误。然后我尝试:

sample_query <- ga_sample %>%
  select(fullVisitorId, date, visitStartTime, totals, channelGrouping, hits) %>% 
  collect() %>% 
  unnest_wider(hits)
Run Code Online (Sandbox Code Playgroud)

但结果是Error: Requested Resource Too Large to Return [responseTooLarge],这是完全有道理的。

从我收集到的信息来看,使用 SQL 语法,解决方法是unnest远程访问,并且select只有hits.page.pagePath字段(而不是整个hits顶级字段)。

例如,这样的事情(这是一个不同的查询,但传达了这一点):

SELECT
  hits.page.pagePath
FROM
  'bigquery-public-data.google_analytics_sample.ga_sessions_20160801' AS GA,
  UNNEST(GA.hits) AS hits
GROUP BY
  hits.page.pagePath
Run Code Online (Sandbox Code Playgroud)

是否可以用dplyr语法做类似的事情?如果不可能,那么使用 SQL 的最佳方法是什么?

谢谢! …

google-analytics r unnest dbplyr bigrquery

5
推荐指数
1
解决办法
445
查看次数

如何删除具有相同名称的所有列(tidyverse 或 base R)?

我的数据集有几个同名的列,我想删除它们。

不幸的是,select(data, -Offender)它不起作用 ( Error: Can't bind data because some arguments have the same name),但我也无法janitor::clean_names克服这个问题——我需要对列名的其余部分保持不变。

我尝试使用基数 R ( df1 <- subset(df1, select = -c(Offender))),但它随后重命名了其他罪犯。#

r dplyr data-cleaning

1
推荐指数
1
解决办法
794
查看次数