This question already has answers here:
Numbering rows within groups in a data frame

(7个答案)


4年前关闭。





我有一个数据集,我想按组生成行位置。例如

library(data.table)

data<-data.table(Position=c(1,2,3,4,5,6,7,8,9,10),
Category=c("M","M","M","M","F","F","F","M","M","F"))


我按类别分组,并想按组创建作为行位置的列。类似于以下内容或带有data.table的内容

dataByGroup %>% group_by(Category) %>% mutate(positionInCategory = 1:nrow(Category))


无法解决该如何实现?

所需的输出:

| Position|Category | positionInCategory|
|--------:|:--------|------------------:|
|        1|M        |                  1|
|        2|M        |                  2|
|        3|M        |                  3|
|        4|M        |                  4|
|        5|F        |                  1|
|        6|F        |                  2|
|        7|F        |                  3|
|        8|M        |                  5|
|        9|M        |                  6|
|       10|F        |                  4|

最佳答案

请尝试以下操作:

library(data.table)
library(dplyr)

data<-data.table(Position=c(1,2,3,4,5,6,7,8,9,10),
                 Category=c("M","M","M","M","F","F","F","M","M","F"))

cleanData <- data %>%
  group_by(Category) %>%
  mutate(positionInCategory = 1:n())

10-08 16:02