首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R嵌套指示符1,1和2,1和2

R嵌套指示符1,1和2,1和2
EN

Stack Overflow用户
提问于 2022-11-04 06:19:48
回答 1查看 53关注 0票数 3

我有一组重复观察的数据集,像这样。

代码语言:javascript
复制
  Id    Date        Group  Diagnosis    
  1     8/16/2004   Red    A
  1     8/16/2004   Red    B
  1     8/16/2004   Red    C

  2     4/23/2010   Blue    A
  2     4/23/2010   Blue    C

  3     5/13/2006   Blue    A
  3     5/13/2006   Blue    B
  3     5/13/2006   Blue    C
  3     6/05/2011   Blue    A
  3     6/05/2011   Blue    B
  3     6/05/2011   Blue    C

  4     10/06/2009   Blue    A
  4     10/06/2009   Blue    B
  4     10/06/2009   Blue    C
  4     7/22/2010    Blue    A
  4     7/22/2010    Blue    B

我想创造一个新的指标值,跟踪哪些观测只有一套观测,哪些只有两种观察。在有两组观察结果的人中,记录器应该指明哪一组是第一组和第二组,等等。

代码语言:javascript
复制
Expected output

      Id    Date        Group  Diagnosis   I   
      1     8/16/2004   Red    A           1-1
      1     8/16/2004   Red    B           1-1
      1     8/16/2004   Red    C           1-1

      2     4/23/2010   Blue    A          1-1
      2     4/23/2010   Blue    C          1-1

      3     5/13/2006   Blue    A          2-1
      3     5/13/2006   Blue    B          2-1      
      3     5/13/2006   Blue    C          2-1 
      3     6/05/2011   Blue    A          2-2 
      3     6/05/2011   Blue    B          2-2
      3     6/05/2011   Blue    C          2-2

      4     10/06/2009   Blue    A         2-1
      4     10/06/2009   Blue    B         2-1
      4     10/06/2009   Blue    C         2-1
      4     7/22/2010    Blue    A         2-2
      4     7/22/2010    Blue    B         2-2

第一列中Id 1和Id 2的值为1-1,因为这两种Id只有一次诊断,Id 1在8/16/2004,Id 2在4/23/2010。

第一栏中Id 3和Id 4的数值为2-1,因为这两种Id都有两组诊断,ID3分别于2006年5月13日和2011年6月5日评估,ID4在2009年6月10日和2010年7月22日评估。关于ID3和ID4的第一组意见分别是2006年5月13日和2009年6月10日的SO2-1。关于Id 3和Id 4的第二组意见分别为2011年5月6日和2010年2月7日

我试过使用n()n_distinct使用group_by( Id,Group, Diagnosis),但这不起作用。因此,任何建议或帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-04 06:38:22

我们可以:

代码语言:javascript
复制
library(dplyr)

df |> 
  group_by(Id) |> 
  mutate(I = paste0(n_distinct(Date), "-", match(Date, unique(Date)))) |> 
  ungroup()

使用paste0粘贴组中不同日期的数量,使用match将日期与第一次匹配相匹配。

代码语言:javascript
复制
      Id Date       Group Diagnosis I    
   <int> <chr>      <chr> <chr>     <chr>
 1     1 8/16/2004  Red   A         1-1  
 2     1 8/16/2004  Red   B         1-1  
 3     1 8/16/2004  Red   C         1-1  
 4     2 4/23/2010  Blue  A         1-1  
 5     2 4/23/2010  Blue  C         1-1  
 6     3 5/13/2006  Blue  A         2-1  
 7     3 5/13/2006  Blue  B         2-1  
 8     3 5/13/2006  Blue  C         2-1  
 9     3 6/05/2011  Blue  A         2-2  
10     3 6/05/2011  Blue  B         2-2  
11     3 6/05/2011  Blue  C         2-2  
12     4 10/06/2009 Blue  A         2-1  
13     4 10/06/2009 Blue  B         2-1  
14     4 10/06/2009 Blue  C         2-1  
15     4 7/22/2010  Blue  A         2-2  
16     4 7/22/2010  Blue  B         2-2
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74312913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档