Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R:如何计算数据帧中唯一列-列匹配的出现次数和平均增量时间

R:如何计算数据帧中唯一列-列匹配的出现次数和平均增量时间
EN

Stack Overflow用户
提问于 2020-02-19 04:25:54
回答 1查看 45关注 0票数 0

我有一个数据集,表示一年中某一诊所的患者访问不同医生的次数。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
doctor    patient_no  datetime

dr.kahn   1561        1/21/19 10:30:00
dr.gould  1397        2/06/19 12:30:00
dr.amoor  1596        2/11/19 9:00:00
dr.gould  995         10/07/19 12:30:00
dr.kahn   1561        10/14/19 9:30

我正在尝试创建一个新的数据帧,其中每一行都是一个唯一的医生-患者配对,并显示该患者访问该医生的次数,以及该特定患者-医生配对的平均访问间隔时间。例如,如果患者A在一年内去dr.kahn 4次,患者A连续预约dr.kahn的平均时间是多少。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
doctor   patient_no   number_of_visits  avg_time_passed_between_appointments

dr.gould   1054       7                 2 months 1 days  2:00:00
dr.gould   1099       2                 5 months 10 days 00:00:00
dr.kahn    875        12                0 months 26 days 0:30:00

任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-02-19 04:58:45

下面是一种dplyr方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(tidyverse)
df %>%
  mutate(datetime = lubridate::mdy_hm(datetime)) %>%
  group_by(doctor, patient_no) %>%
  summarize(count = n(),
            avg_days_between = (max(datetime) - min(datetime)) / lubridate::ddays(count - 1)) %>%
  ungroup()

## A tibble: 4 x 4
#  doctor   patient_no count avg_days_between
#  <chr>         <dbl> <int>            <dbl>
#1 dr.amoor       1596     1             NaN 
#2 dr.gould        995     1             NaN 
#3 dr.gould       1397     1             NaN 
#4 dr.kahn        1561     2             266.

或者,您可以计算每个滞后,并使用不同的方法,如中位数,来表征平均增量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df %>%
  group_by(doctor, patient_no) %>%
  mutate(datetime = lubridate::mdy_hm(datetime),
         # coalesce helps
         days_since_last = coalesce(c(datetime - lag(datetime))/
                                      lubridate::ddays(1), 0)) %>%
  summarize(count = n(),
            median_time_between = median(days_since_last))

## A tibble: 4 x 4
# Groups:   doctor [3]
#  doctor   patient_no count median_time_between
#  <chr>         <dbl> <int>               <dbl>
#1 dr.amoor       1596     1                  0 
#2 dr.gould        995     1                  0 
#3 dr.gould       1397     1                  0 
#4 dr.kahn        1561     2                133.

样本数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df <- tibble::tribble(
     ~doctor, ~patient_no,       ~datetime,
   "dr.kahn",        1561, "1/21/19 10:30",
  "dr.gould",        1397,  "2/6/19 12:30",
  "dr.amoor",        1596,  "2/11/19 9:00",
  "dr.gould",         995, "10/7/19 12:30",
   "dr.kahn",        1561, "10/14/19 9:30"
  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60293012

复制
相关文章
Pandas 查找,丢弃列值唯一的列
数据清洗很重要,本文演示如何使用 Python Pandas 来查找和丢弃 DataFrame 中列值唯一的列,简言之,就是某列的数值除空值外,全都是一样的,比如:全0,全1,或者全部都是一样的字符串如:已支付,已支付,已支付…
萝 卜
2022/05/12
5.7K0
Pandas 查找,丢弃列值唯一的列
在数据框架中创建计算列
在Excel中,我们可以通过先在单元格中编写公式,然后向下拖动列来创建计算列。在PowerQuery中,还可以添加“自定义列”并输入公式。在Python中,我们创建计算列的方式与PQ中非常相似,创建一列,计算将应用于这整个列,而不是像Excel中的“下拉”方法那样逐行进行。要创建计算列,步骤一般是:先创建列,然后为其指定计算。
fanjy
2022/04/13
3.8K0
在数据框架中创建计算列
按照A列进行分组并计算出B列每个分组的平均值,然后对B列内的每个元素减去分组平均值
前几天在Python星耀交流群有个叫【在下不才】的粉丝问了一个Pandas的问题,按照A列进行分组并计算出B列每个分组的平均值,然后对B列内的每个元素减去分组平均值,这里拿出来给大家分享下,一起学习。
前端皮皮
2022/08/17
3K0
按照A列进行分组并计算出B列每个分组的平均值,然后对B列内的每个元素减去分组平均值
问与答63: 如何获取一列数据中重复次数最多的数据?
Q:如下图1所示,在工作表列A中有很多数据(为方便表述,示例中只放置了9个数据),这些数据中有很多重复数据,我想得到重复次数最多的数据是那个,示例中可以看出是“完美Excel”重复的次数最多,如何获得这个数据?
fanjy
2019/08/20
3.6K0
问与答63: 如何获取一列数据中重复次数最多的数据?
如何在 Pandas 中创建一个空的数据帧并向其附加行和列?
Pandas是一个用于数据操作和分析的Python库。它建立在 numpy 库之上,提供数据帧的有效实现。数据帧是一种二维数据结构。在数据帧中,数据以表格形式在行和列中对齐。它类似于电子表格或SQL表或R中的data.frame。最常用的熊猫对象是数据帧。大多数情况下,数据是从其他数据源(如csv,excel,SQL等)导入到pandas数据帧中的。在本教程中,我们将学习如何创建一个空数据帧,以及如何在 Pandas 中向其追加行和列。
很酷的站长
2023/08/11
2930
如何在 Pandas 中创建一个空的数据帧并向其附加行和列?
PBI-基础入门:添加列与新建列(计算列)
大海:在Power BI里增加列有2种方法,一种是咱们在学Power Query里的“添加列”方法,还有一种是在PowerPivot里的新建“计算列”方法。具体操作方法如下:
大海Power
2021/08/30
7.6K0
Pandas | 如何新增数据列?
在数据分析时,原始数据往往不能满足我们的需求,经常需要按照一定条件创建新的数据列或者修改原有数据列,然后进行后续分析。
生信real
2022/12/20
2.1K0
excel列中相同字符串统计_输入一串字符统计出现次数
https://jingyan.baidu.com/article/6d704a132ea17328da51ca78.html
全栈程序员站长
2022/09/19
2K0
excel列中相同字符串统计_输入一串字符统计出现次数
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
Python数据分析—时间列的基本操作
比如一个数据框中只有借款人的年龄(类似1994年2月8号),我们想把这一列转换成具体的岁数,放到模型中使用。
阿黎逸阳
2020/12/11
1.1K0
Python数据分析—时间列的基本操作
R语言第二章数据处理⑤数据框列的转化和计算目录正文
本篇描述了如何计算R中的数据框并将其添加到数据框中。一般使用dplyr R包中以下R函数:
用户1359560
2018/12/25
4.2K0
DAX | 计算列排名
实际应用中一般使用度量值来计算排名,今天小伙伴因为特殊场景需要,必须采用计算列来显示排名。
披头
2020/02/17
2.1K1
DAX | 计算列排名
awk 列求和计算
说明: [分隔符]:一般为“\t”制表符,具体视格式而定 [列数]:统计的列数索引,从1开始
莫斯
2020/09/10
1.5K0
Power Query中如何把多列数据合并?
解释:第一个List.Range目的是为了固定班级字段;第2个List.Range是为了提取第一组的数据。然后和2个列表进行组合并转成Table格式。
逍遥之
2020/03/23
4.6K0
「R」数据汇总时自动生成多列
下面的代码和数据源主要来自:https://stackoverflow.com/questions/51063842/create-multiple-columns-in-summarize,以计算分位数为例。
王诗翔呀
2020/07/03
9480
【R语言】数据框按两列排序
我相信大家经常会使用Excel对数据进行排序。有时候我们会按照两个条件来对数据排序。假设我们手上有下面这套数据,9个人,第二列(score)为他们的考试成绩,第三列(code)为对应的评级。80分以上为优秀,60-80为良,60以下为差。
生信交流平台
2022/09/21
2.3K0
【R语言】数据框按两列排序
PQ基础-数据转换4:删列、移列、添加索引列
本文通过一个例子,综合体现常用的删列、移列、添加索引列操作方法。数据样式及要求如下:
大海Power
2021/08/31
1.7K0
Power Query如何处理日月年的时间列?
对我们来说可以理解为,日/月/年,但是我们看下导入到Power Query中会如何显示?
逍遥之
2020/03/24
2.9K0
Pandas中求某一列中每个列表的平均值
前几天在Python最强王者交流群【冫马讠成】问了一道Pandas处理的问题,如下图所示。
前端皮皮
2022/08/17
4.9K0
Pandas中求某一列中每个列表的平均值
点击加载更多

相似问题

计数数据帧列R中出现的次数

35

在R中,如何计算特定列的出现次数?

251

如何计算SQL中唯一列和行的出现次数?

26

计算列间出现的次数,并与ID列匹配

111

数据与每列匹配的平均次数

217
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文