这个问题的后续问题:是否可以递归应用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) 如果可能,我想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 的最佳方法是什么?
谢谢! …
我的数据集有几个同名的列,我想删除它们。
不幸的是,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))),但它随后重命名了其他罪犯。#