-2

「id1」、「id2」、「id3」、「name」の 4 つの列がdata.frameあり、「id1」、「id2」、「id3」は非常に長い文字列です。

新しいキーを生成するには、「id1」、「id2」、および「id3」を接続する必要があります。「id1」+「id2」+「id3」が重複している可能性があります。つまり、それぞれの新しいキーは、「id1」+「id2」+「id3」の値の新しい組み合わせです。

「key1」、「key2」などのシンプルで短い新しいキーが欲しい...

4

2 に答える 2

1

.GRPこれについてはfrom "data.table"を使用することをお勧めします。また、50 万行のデータに苦労することもありません。

library(data.table)
as.data.table(DF)[, combined := .GRP, by = names(DF)][]
#     key1 key2 key3 combined
#  1:    b    a    b        1
#  2:    b    b    a        2
#  3:    a    b    b        3
#  4:    b    a    b        1
#  5:    b    a    a        4
#  6:    b    b    b        5
#  7:    b    b    a        2
#  8:    a    a    b        6
#  9:    b    a    a        4
# 10:    b    b    b        5

結合されたキーを他のキーのソートされたセットに従ってソートする必要がある場合はsetkey、上記の手順を実行する前に を使用します。

于 2014-12-20T09:36:34.273 に答える