小编SFu*_*Fuj的帖子

有条件地计入dplyr

我有一些会员订单数据,我想按订单周汇总.

这就是数据的样子:

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函数的一个小调整,但是我很难搞清楚它.

r dplyr

36
推荐指数
2
解决办法
4万
查看次数

根据来自其他 data.frame 的多个条件进行计数

我正在将分析从 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 中的解决方案。

谢谢。

r dataframe

5
推荐指数
1
解决办法
1252
查看次数

在数据框中的组内运行计数

我有一个在线购物平台的订单数据库.

我正在使用的表格如下所示,其中每一行对应一个客户/项目/日期.

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解决方案,但我愿意接受任何建议!平台上的确切项目在不断变化,因此解决方案必须是动态的才能解决这个问题.

r dplyr

3
推荐指数
1
解决办法
4520
查看次数

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

r shiny dplyr

2
推荐指数
1
解决办法
4405
查看次数

标签 统计

r ×4

dplyr ×3

dataframe ×1

shiny ×1