R 如何创建一个新表来汇总来自另一个数据框的数据?
我有一个数据帧df,它的数据看起来像R 如何创建一个新表来汇总来自另一个数据框的数据?,r,R,我有一个数据帧df,它的数据看起来像 dataset这里有一个解决方案,可能不是最好的,但它很有效 ## Load Data customer_id <- c(12,12,34,234,781,456) Sales_id <- c(20013211129, 20013217122, 20013149844, 20013273151, 20013222724,
dataset这里有一个解决方案,可能不是最好的,但它很有效
## Load Data
customer_id <- c(12,12,34,234,781,456)
Sales_id <- c(20013211129,
20013217122,
20013149844,
20013273151,
20013222724,
20013171637)
Rev <- rep(1000, 6)
Source <- c("App", "Non-App", "App", "Non-App", "Non-App", "Non-App")
data <- data.frame(customer_id, Sales_id, Rev, Source, stringsAsFactors = FALSE)
## Create Overview table
library(dplyr)
result <- data %>%
group_by(Source) %>%
summarise(No_of_customers = length(unique(customer_id)),
no_of_orders = length(unique(Sales_id)),
total_revenue = sum(Rev))
temp_res <- result[,-1]
temp_res <- rbind(temp_res, apply(temp_res, 2, sum))
temp_res <- rbind(temp_res, temp_res[1,]/temp_res[3,]*100)
cbind(Cat = c("App", "Non-App", "Total", "App%"), temp_res)
##加载数据
对于这类东西的客户id,您应该明确查看“tidyr”和“dplyr”包。需要注意的是,你需要花很多小时(实际上是几周)来学习,并达到一个你可以制作这样一张桌子的程度。但是可能没有其他选择。ddply
功能(来自plyr
包)对于数据摘要是很好的。您可以一次执行多个操作并命名它们,还可以通过各种其他变量进行分组
library(tidyr)
result <- result %>%
pivot_longer(cols = -Source, names_to = "Cat")
## get Total
result %>%
group_by(Cat) %>%
summarise(Sum = sum(value))
## get Share
result %>%
group_by(Cat) %>%
summarise(App_share = value[Source == "App"] / sum(value))