我用下面的代碼打了一下磚牆。從本質上講,dftable應該是一個過濾的數據框,包含一個小部件的點擊(我循環遍歷每個小部件的列)。在R中總結多列(同時保留過濾器)
然後,我想要獲得小部件處於活動狀態的所有綜合瀏覽量的總和(它不是在所有頁面上,而是按照過濾來排除那些不適用的頁面)。但是,dfviews只是返回所有的綜合瀏覽量,而不是篩選小部件不是NA的位置。
任何指導,將不勝感激: mixpanelData例如:
--------------------------------------------------------------
| Group | Date | WidgetClick | Widget2Click | ViewedPageResult
--------------------------------------------------------------
| ABC | 01/01/2017 | 123456 | NA | 1450544
--------------------------------------------------------------
| ABN | 01/01/2017 | NA | 1245 | 4560000
--------------------------------------------------------------
| ABN | 01/02/2017 | NA | 1205 | 4561022
--------------------------------------------------------------
| BNN | 01/02/2017 | 1044 | NA | 4561021
--------------------------------------------------------------
一個我理想中的輸出會沿着...的線(與比例,這是很好的,因爲我可以處理這些)
WidgetClick CSV
--------------------------------------------------------------
Date | WidgetClick | ViewedPageResult
--------------------------------------------------------------
01/01/2017 | 123455 | 1450544
------------------------------------------------------------
01/02/2017 | 1044 | 4561021
--------------------------------------------------------------
WidgetClick 2 CSV
--------------------------------------------------------------
|Date | Widget2Click | ViewedPageResult
--------------------------------------------------------------
01/01/2017 | 1245 | 4560000
--------------------------------------------------------------
01/02/2017 | 1205 | 4561022
--------------------------------------------------------------
代碼如下提供...
vars = colnames(mixpanelData)
vars =vars[-c(1,2)]
k = 1
for (v in vars) {
filename <- paste(v,k,".csv",sep="")
dftable <- mixpanelData %>% filter(!is.na(v)) %>% group_by(Date) %>% summarise_(clicksum=interp(~sum(var, na.rm = TRUE), var = as.name(v)))
dfviews <- mixpanelData %>% filter(!is.na(v)) %>% group_by(Date) %>% summarise(viewsum=sum((ViewedPageResult)))
total <- merge(dftable,dfviews,by="Date")
total <- mutate(total, proportion = clicksum/viewsum * 100)
write.csv(total, file = filename,row.names=FALSE, na="")
k <- k +1 }
您可以添加一個小的可重現數據示例以及您想要的結果嗎? –
是的 - 我已經添加了一些示例表。希望這可以幫助。 – Hemmed