Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何创建一个新表来汇总来自另一个数据框的数据?_R - Fatal编程技术网

R 如何创建一个新表来汇总来自另一个数据框的数据?

R 如何创建一个新表来汇总来自另一个数据框的数据?,r,R,我有一个数据帧df,它的数据看起来像 dataset这里有一个解决方案,可能不是最好的,但它很有效 ## Load Data customer_id <- c(12,12,34,234,781,456) Sales_id <- c(20013211129, 20013217122, 20013149844, 20013273151, 20013222724,

我有一个数据帧df,它的数据看起来像


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))