R语言 基于同一个人同一疾病的不同日期创建新列

k5ifujac  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(92)

| 概念|日期_Dx| Dx| Dx |
| --|--|--| ------------ |
| 2005年11月14日|2008年10月1日|xx| xx |
| 2005年11月14日|2008-04-08| yy| yy |
| 2005年11月14日|2008-10-05| xx| xx |
| 2005年11月14日|2008-04-08| zz| zz |
我试图创建一个新列(copy_Dx),如果某人在不同的date_Dx上有相同的Dx,则复制Dx,否则复制的值为0。基本上,我尝试这样定义copy_Dx:一个以上的日期具有相同的代码(Dx),表示特定疾病。
我试过这样的东西:

df1 <- df%>%
group_by(ID, conception, Dx)%>%
  mutate(copy_Dx = if_else(n_distinct(date)>1, Dx,"0"))%>%
  ungroup()

字符串
但我得到了以下错误:由if_else()中的错误引起:!true的大小必须为% 1,而不是% 2。
我用ifelse替换了if_else,这是可行的,但我想知道是否有一种方法可以让它与if_else一起工作。

uelo1irk

uelo1irk1#

使用if代替if_else

df %>%
  group_by(ID, conception, Dx) %>%
  mutate(copy_Dx = if (n_distinct(date_Dx) > 1) Dx else "0") %>%
  ungroup()
# # A tibble: 4 × 5
#      ID conception date_Dx    Dx    copy_Dx
#   <int> <chr>      <chr>      <chr> <chr>  
# 1     1 2005-11-14 2008-10-01 xx    xx     
# 2     1 2005-11-14 2008-04-08 yy    0      
# 3     1 2005-11-14 2008-10-05 xx    xx     
# 4     1 2005-11-14 2008-04-08 zz    0

字符串

相关问题