我试图为一个因子变量的不同组别水平创建一个索引(即一个从0到n的列),所有这些都在一个列中。具体来说,以下是一个针对数据框 D 的最小工作示例: ID Index 1 1 1 2 2 1 2 2 3 1 3 2 3 3 我目前拥有第一列,希望获得第二列。我在解决这个问题上花费的时间比想象中多。我尝试了几种方法,但以下方法似乎应该有效: dlply(D, .(ID), function(D){D$index = seq.int(nrow(D$ID))})
在原问题的评论中,Tung提供的答案对我有用。为了完整起见,在此提供: library(dplyr) df %>% group_by(ID) %>% mutate(Index = row_number())
group_by
和data.table::rleid
创建新列。您可以在mutate
中使用data.table::rleid
。 - Andrewdplyr
库,对数据框df
按照ID
进行分组,并添加一列名为Index
表示每个组内行的序号。具体代码如下:library(dplyr) df %>% group_by(ID) %>% mutate(Index = row_number())
- Tung