我有一组重复观察的数据集,像这样。
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我想创造一个新的指标值,跟踪哪些观测只有一套观测,哪些只有两种观察。在有两组观察结果的人中,记录器应该指明哪一组是第一组和第二组,等等。
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),但这不起作用。因此,任何建议或帮助都是非常感谢的。谢谢。
发布于 2022-11-04 06:38:22
我们可以:
library(dplyr)
df |>
group_by(Id) |>
mutate(I = paste0(n_distinct(Date), "-", match(Date, unique(Date)))) |>
ungroup()使用paste0粘贴组中不同日期的数量,使用match将日期与第一次匹配相匹配。
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-2https://stackoverflow.com/questions/74312913
复制相似问题