【发布时间】:2020-02-21 17:07:42
【问题描述】:
我需要患者在医院的所有天数,即 AufnDat 和 EntlDat 之间的天数。我将 seq 与 mutate 一起使用,如 reprex 所示,我收到错误: seq.Date 中的错误(from = dmy(AufnDat), to = dmy(EntlDat), by = "day"): 'from' muss Länge 1 haben
``` r
library(tidyverse)
library(lubridate)
#>
#> Attache Paket: 'lubridate'
#> The following object is masked from 'package:base':
#>
#> date
df <- tibble::tribble(
~PLZ, ~AufnDat, ~EntlDat, ~Stat1,
67067, "22.01.2020", "23.01.2020", "1A",
74936, "21.01.2020", "23.01.2020", "1A",
97999, "21.01.2020", "27.01.2020", "0A",
76669, "15.01.2020", "17.01.2020", "1",
69126, "07.01.2020", "13.01.2020", "0A",
68753, "13.01.2020", "17.01.2020", "1A",
74928, "23.01.2020", "28.01.2020", "2A",
64720, "10.01.2020", "13.01.2020", "1",
48599, "16.01.2020", "22.01.2020", "0A",
68723, "07.01.2020", "13.01.2020", "0A"
)
df <- df %>% mutate(seqdat = seq(from=dmy(AufnDat), to=dmy(EntlDat), by="day"))
#> Error in seq.Date(from = dmy(AufnDat), to = dmy(EntlDat), by = "day"): 'from' muss Länge 1 haben
```
if I try the same for one row without mutate it works
``` r
## this works:
seq(from=dmy(df[1,2]), to=dmy(df[1,3]), by="day")
#> [1] "2020-01-22" "2020-01-23"
```
由reprex package (v0.3.0) 于 2020 年 2 月 21 日创建
区别和我的错在哪里?
【问题讨论】:
-
当您在 from 和 to 中放置具有多个值的向量时,mutate 不起作用。您需要一个值。 df[1,2] 是一个信号值(第一行第二列中的那个),所以这就是为什么它起作用的原因。您是否尝试使用最小或最大 Augndat 或 Entldat?我不知道你到底想达到什么目标,所以有点难以提供帮助。