1. ホーム
  2. r

[解決済み] dplyr: group_by で行番号/行位置を生成する [重複]。

2022-02-11 10:27:36

質問

データセットがあり、グループごとに行の位置を生成したい。例えば

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"))

Categoryでグループ化し、グループごとの行の位置を表すカラムを作りたいのですが、どうすればよいでしょうか?以下のようなもの、または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())