分配唯一值

Assigning Unique Values

我有一个数据框 (02outcomes$transfusion_date),其中有一系列日期如下所示:

2020-03-28 18:01:00
2020-03-28 22:16:00
2020-04-01 19:30:00
2020-04-01 23:56:00

我想像这样为每个人分配唯一的 ID:

1   2020-03-28 18:01:00
2   2020-03-28 22:16:00
3   2020-04-01 19:30:00
4   2020-04-01 23:56:00

值需要按时间顺序升序排列。

附带说明一下,当我使用 dput 函数查看我的数据时,它看起来像这样,这有问题吗?:

1588635000, 1588706160, 1588714320, 1588721640, 1588881900 

我发现了一个看似相似但似乎无法使这些解决方案起作用的线程: Create an ID (row number) column

提前致谢

transfusion_date排列数据,然后您可以为每一行创建一个唯一索引。

在基础 R 中,你可以这样做:

outcomes <- outcomes[order(outcomes$transfusion_date), ]
outcomes$ID <- seq_len(nrow(outcomes))

或使用dplyr

library(dplyr)
outcomes %>% arrange(transfusion_date) %>% mutate(Id = row_number())

你可以使用 dplyr

library(tidyverse)
library(lubridate)


testing <- data.frame(dates = c(ymd_hms("2020-03-28 18:01:00"),
                                ymd_hms("2020-03-28 22:16:00"),
                                ymd_hms("2020-04-01 19:30:00"),
                                ymd_hms("2020-04-01 23:56:00")))

testing %>% 
  arrange(dates) %>% 
  mutate(ids = row_number())

我们可以使用data.table。将数据转换为 'data.table' (setDT)、order 'transfusion_date' 并在行序列

上分配 'Id'
library(data.table)
setDT(outcomes)[order(transfusion_date), Id := seq_len(.N)][]

我觉得你可以使用 order:

outcomes$id = order(outcomes$transfusion_date)

感谢您的投入。我用了这个

outcomes <- outcomes[order(outcomes$transfusion_date), ]

结果$ID <- seq_len(nrow(结果))