如何将数字与 R 中的日期 class 相关联

How to associate a number to a date class in R

我有一个带有日期列的数据框,如下所示:

Decade
1770-1779
1780-1789
1770-1779
1820-1829
1770-1779
1790-1799
1800-1809
1810-1819

等...

所需的输出是添加一个连续变量“时间”,如下所示:

Decade Time
1770-1779 1
1780-1789 2
1770-1779 1
1820-1829 6
1770-1779 1
1790-1799 3
1800-1809 4
1810-1819 5

等...

非常感谢。

您需要的功能是包 dplyr 中的 cur_group_id()

library(dplyr)

df %>% group_by(Decade) %>% mutate(Time = cur_group_id())

# A tibble: 8 × 2
# Groups:   Decade [6]
  Decade     Time
  <chr>     <int>
1 1770-1779     1
2 1780-1789     2
3 1770-1779     1
4 1820-1829     6
5 1770-1779     1
6 1790-1799     3
7 1800-1809     4
8 1810-1819     5

数据

df <- read.table(header = T, text = "
Decade
1770-1779
1780-1789
1770-1779
1820-1829
1770-1779
1790-1799
1800-1809
1810-1819")

我们可以使用 base Rfactor

df$Time <- as.integer(factor(df$Decade, levels = sort(unique(df$Decade))))

-输出

> df
     Decade Time
1 1770-1779    1
2 1780-1789    2
3 1770-1779    1
4 1820-1829    6
5 1770-1779    1
6 1790-1799    3
7 1800-1809    4
8 1810-1819    5

或者另一种选择是 match

with(df, match(Decade, sort(unique(Decade))))
[1] 1 2 1 6 1 3 4 5

数据

df <- structure(list(Decade = c("1770-1779", "1780-1789", "1770-1779", 
"1820-1829", "1770-1779", "1790-1799", "1800-1809", "1810-1819"
)), class = "data.frame", row.names = c(NA, -8L))