同様の投稿を検索しようとしましたが、できませんでした。カラムを一意にインデックスする方法は?
私はこのようになり、データテーブル内の列がある - それを行う方法>
1,1,1,1,2,2,2,3,3,3
- 私は、このようなこと別の列にインデックスを作成する>
x,x,x,x,y,y,y,c,c,c
を?
同様の投稿を検索しようとしましたが、できませんでした。カラムを一意にインデックスする方法は?
私はこのようになり、データテーブル内の列がある - それを行う方法>
1,1,1,1,2,2,2,3,3,3
- 私は、このようなこと別の列にインデックスを作成する>
x,x,x,x,y,y,y,c,c,c
を?
dt$index <- cumsum(!duplicated(dt$a))
dt
a index
# 1 x 1
# 2 x 1
# 3 x 1
# 4 x 1
# 5 y 2
# 6 y 2
# 7 y 2
# 8 c 3
# 9 c 3
# 10 c 3
data.table
と解決策:
library(data.table)
dt <- data.table(col = c("x", "x", "x", "x", "y", "y", "y", "c", "c", "c"))
dt[ , idx := .GRP, by = col]
# col idx
# 1: x 1
# 2: x 1
# 3: x 1
# 4: x 1
# 5: y 2
# 6: y 2
# 7: y 2
# 8: c 3
# 9: c 3
# 10: c 3
ベースR溶液:利点が
dat <- data.frame(col = c("x", "x", "x", "x", "y", "y", "y", "c", "c", "c"))
dat <- transform(dat, idx = match(col, unique(col)))
# col idx
# 1 x 1
# 2 x 1
# 3 x 1
# 4 x 1
# 5 y 2
# 6 y 2
# 7 y 2
# 8 c 3
# 9 c 3
# 10 c 3
が、私はこれで行くと思い、データフレームとdatで作業するテーブル、(そしてたぶんtibbles、idk)。インデックス番号は、col
コードの最初の出現から取得され、出力インデックス番号はcol
コードが隣接行であることに依存しません(したがって、col
がx,x,x,x,y,y,y,x,x,x
の場合はすべてx
インデックスを取得します)。
> dt <- data.table(col = c("x", "x", "x", "x", "y", "y", "y", "c", "c", "c"))
> dt$index = as.numeric(factor(dt$col,levels=unique(dt$col)))
> dt
col index
1: x 1
2: x 1
3: x 1
4: x 1
5: y 2
6: y 2
7: y 2
8: c 3
9: c 3
10: c 3
実重複はここにある:https://stackoverflow.com/questions/6112803/how-to-create-a-consecutive-index-based-on-a-grouping-variable-in-a-dataframe – Spacedman