通过组[重复]重新设置数字索引列。

问题描述 投票:0回答:1

我有一个笼统的例子,有两列数据,一列是日期,另一列是日期的数字索引。我想能够重置索引都开始在1。 下面显示的视觉上,我想完成。谢谢你的帮助。

dateA = c("5/8/2020","5/8/2020", "5/8/2020", "5/9/2020","5/9/2020", "5/9/2020", "5/9/2020", "5/10/2020","5/10/2020", "5/10/2020", "5/11/2020")
varA = c(2,3,4,9,10,11,12,20,21,22,55)
data = data.frame(dateA,varA)
Oringal Index
dateA     varA
5/8/2020  2
5/8/2020  3
5/8/2020  4
5/9/2020  9
5/9/2020  10
5/9/2020  11
5/9/2020  12
5/10/2020 20
5/10/2020 21
5/10/2020 22
5/11/2020 55

Reset Index
dateA     varA
5/8/2020  1
5/8/2020  2
5/8/2020  3
5/9/2020  1
5/9/2020  2
5/9/2020  3
5/9/2020  4
5/10/2020 1
5/10/2020 2
5/10/2020 3
5/11/2020 1
r dplyr
1个回答
1
投票

我们可以使用 rowiddata.table

library(data.table)
data$varA <- rowid(data$dateA)

或使用 data.table 句法

setDT(data)[, varA := rowid(dateA)]

或与 dplyr

library(dplyr)
data %>%
    group_by(dateA) %>%
    mutate(varA = row_number())

或使用 base R

data$varA <- with(data, ave(seq_along(dateA), dateA, FUN = seq_along))
© www.soinside.com 2019 - 2024. All rights reserved.