如何在R中将值列表与另一个值绑定

时间:2015-04-30 19:49:22

标签: r

我正在尝试将我的csv文件中的一列变量绑定到整数列表。这是我的数据的简短示例:

     blocks
1.   097XX S BRENNAN AVE
2.   105XX S YATES AVE
3.   105XX S YATES AVE
4.   103XX S CORLISS AVE
5.   097XX S BRENNAN AVE
6.   103XX S CORLISS AVE

所以通过unique(块),我实际上有3个唯一的块名,我用整数分配它们的块号:

     blocks               block_num
1.   097XX S BRENNAN AVE    1
2.   105XX S YATES AVE      2
3.   103XX S CORLISS AVE    3

问题是如何让原始长块列表得到相应的块编号列,如下所示:

     blocks                 block_num
1.   097XX S BRENNAN AVE    1
2.   105XX S YATES AVE      2
3.   105XX S YATES AVE      2
4.   103XX S CORLISS AVE    3
5.   097XX S BRENNAN AVE    1
6.   103XX S CORLISS AVE    3

我有大约2,000个区块观察。所以我正在寻找一种快速的方法来将分配应用于长列表。

谢谢!

1 个答案:

答案 0 :(得分:3)

" data.table"更为惯用的方法。将使用.GRP

继续使用Dayne的样本数据:

set.seed(1234)
library(data.table)
xmpl <- data.table(block = sample(c("aaa", "bbb", "ccc"), 10, TRUE))
xmpl[, block_num := .GRP, by = block][]
#     block block_num
#  1:   aaa         1
#  2:   bbb         2
#  3:   bbb         2
#  4:   bbb         2
#  5:   ccc         3
#  6:   bbb         2
#  7:   aaa         1
#  8:   aaa         1
#  9:   bbb         2
# 10:   bbb         2