我有一些会员订单数据,我想按订单周汇总.
这就是数据的样子:
memberorders=data.frame(MemID=c('A','A','B','B','B','C','C','D'),
week = c(1,2,1,4,5,1,4,1),
value = c(10,20,10,10,2,5,30,3))
Run Code Online (Sandbox Code Playgroud)
我正在使用dplyr来group_by"MemID"并总结"值"为"周"<= 2和<= 4(看看每个成员在第1-2周和第1-4周订购了多少.我目前的代码是:
MemberLTV <- memberorders %>%
group_by(MemID) %>%
summarize(
sum2 = sum(value[week<=2]),
sum4 = sum(value[week<=4]))
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试在汇总中添加另外两个字段,count2和count4,它们将计算每个条件的实例数(周<= 2且周<= 4).
所需的输出是:
output = data.frame(MemID = c('A','B','C','D'),
sum2 = c(30,10,5,3),
sum4 = c(30,20,35,3),
count2 = c(2,1,1,1),
count4 = c(2,2,2,1))
Run Code Online (Sandbox Code Playgroud)
我猜这只是sum函数的一个小调整,但是我很难搞清楚它.
我正在将分析从 Excel 迁移到 R,并且想要一些关于如何最好地在 R 中执行类似于 Excel 的 COUNTIFS 的内容的输入。
我有两个 data.frames,statef 和 memberdf。
statedf=data.frame(state=c('MD','MD','MD','NY','NY','NY'), week = 5:7)
memberdf=data.frame(memID = 1:15, state = c('MD','MD','NY','NY','MD'),
finalweek = c(3,3,5,3,3,5,3,5,3,5,6,5,2,3,5),
orders = c(1,2,3))
Run Code Online (Sandbox Code Playgroud)
此数据用于基于订阅的业务。我想知道statef中每周/状态组合新失效的成员数量,其中新失效的定义是statef$week - 1 = memberdf$finalweek。此外,我想对每个订单值(1、2、3)进行单独计数。
所需的输出看起来像
out <- data.frame(state=c('MD','MD','MD','NY','NY','NY'), week = 5:7,
oneorder = c(0,1,0,0,0,0),
twoorder = c(0,0,1,0,1,0),
threeorder = c(0,3,0,0,1,0))
Run Code Online (Sandbox Code Playgroud)
我昨天问了(并得到了很好的回应)这个问题的一个更简单的版本——答案围绕着创建一个基于 member.df 的新 data.frame 展开。但是,我需要将数据附加到statef,因为statef 具有memberf 中不存在的成员/周组合,反之亦然。如果这是在 Excel 中,我会使用 COUNTIFS 但正在努力寻找 R 中的解决方案。
谢谢。
我有一个在线购物平台的订单数据库.
我正在使用的表格如下所示,其中每一行对应一个客户/项目/日期.
OrderHistory <- data.frame(date=c("2015-02-01", "2015-03-01", "2015-04-01", "2015-03-01", "2015-04-01", "2015-05-01", "2015-05-01"),
customer=c("A","A","A","B","B","B","B"),
item=c("Candy", "Coffee", "Coffee", "Candy", "Candy", "Candy", "Coffee" ))
Run Code Online (Sandbox Code Playgroud)
我想得到的是每个成员订购特定物品的次数的运行计数,因此我可以分析哪些物品是由相同的客户重复订购的,哪些物品是一次订购而不是再次订购.
输出看起来像
out <- data.frame(date=c("2015-02-01", "2015-03-01", "2015-04-01", "2015-03-01", "2015-04-01", "2015-05-01", "2015-05-01"),
member=c("A","A","A","B","B","B","B"),
item=c("Candy", "Coffee", "Coffee", "Candy", "Candy", "Candy", "Coffee" ),
count=c(1,1,2,1,2,3,1))
Run Code Online (Sandbox Code Playgroud)
我想要一个dplyr解决方案,但我愿意接受任何建议!平台上的确切项目在不断变化,因此解决方案必须是动态的才能解决这个问题.
使用Shiny时,我无法在dplyr工作中获得group_by.似乎dplyr无法将Shiny的输入$ var识别为表中的有效字段.
在这个例子中,我希望ui.R中的"level"输入决定分组的内容.
在ui.RI有:
library(shiny)
shinyUI(fluidPage(
titlePanel("Orders"),
sidebarLayout(
sidebarPanel(
selectInput("Region_Input", label = h5("Choose a Region"),
choices = list("A", "B")),
radioButtons("level", "What level do you want to see:",
list("item", "category"))
),
mainPanel(
verbatimTextOutput("Level_Select"),
tableOutput(outputId="table")
))))
Run Code Online (Sandbox Code Playgroud)
在server.RI中有:
library(shiny)
library(dplyr)
OrderItems <- data.frame(Region = c('A','A','A','A','A','A','B','B','B','B','B','B','B'),
item = c('Item A','Item B','Item C','Item D','Item E',
'Item A','Item B','Item C','Item D','Item E',
'Item A','Item B','Item C'),
category = c('Cat 1','Cat 1','Cat 1','Cat 2','Cat 2',
'Cat 1','Cat 1','Cat 1','Cat 2','Cat 2',
'Cat 1','Cat 1','Cat 1'))
shinyServer(
function(input, …Run Code Online (Sandbox Code Playgroud)