如何将数字与 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 R
和 factor
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))
我有一个带有日期列的数据框,如下所示:
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 R
和 factor
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))