Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中如何将一个值列表与另一个值绑定_R - Fatal编程技术网

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

在R中如何将一个值列表与另一个值绑定,r,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

我试图将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
我有大约2000个区块观测。因此,我正在寻找一种快速的方法来将赋值应用于长列表


谢谢

在这里,我使用了
data.table
包,但您也可以使用
data.frame
包。解决方案的核心是使用
match
功能将块与唯一块列表进行匹配

set.seed(1234)
library(data.table)
xmpl <- data.table(block = sample(c("aaa", "bbb", "ccc"), 10, TRUE))

xmpl[ , block_num := match(block, unique(block))]
xmpl
#     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
请注意,
unique
不会重新排序,第一个示例中给出的字母顺序纯属偶然。当块没有按字母顺序排列时,该方法仍然有效

xmpl <- data.table(block = rep(c("bbb", "aaa", "ccc"), 3))
xmpl[ , block_num := match(block, unique(block))]
xmpl
     block block_num
# 1:   bbb         1
# 2:   aaa         2
# 3:   ccc         3
# 4:   bbb         1
# 5:   aaa         2
# 6:   ccc         3
# 7:   bbb         1
# 8:   aaa         2
# 9:   ccc         3

xmpl在这里,我使用了
data.table
包,但您也可以使用
data.frame
。解决方案的核心是使用
match
功能将块与唯一块列表进行匹配

set.seed(1234)
library(data.table)
xmpl <- data.table(block = sample(c("aaa", "bbb", "ccc"), 10, TRUE))

xmpl[ , block_num := match(block, unique(block))]
xmpl
#     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
请注意,
unique
不会重新排序,第一个示例中给出的字母顺序纯属偶然。当块没有按字母顺序排列时,该方法仍然有效

xmpl <- data.table(block = rep(c("bbb", "aaa", "ccc"), 3))
xmpl[ , block_num := match(block, unique(block))]
xmpl
     block block_num
# 1:   bbb         1
# 2:   aaa         2
# 3:   ccc         3
# 4:   bbb         1
# 5:   aaa         2
# 6:   ccc         3
# 7:   bbb         1
# 8:   aaa         2
# 9:   ccc         3

xmpl在“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
set.seed(1234)
库(数据表)

xmpl在“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
set.seed(1234)
库(数据表)

xmpl您可能正在寻找
帮助(“合并”)
。您可能正在寻找
帮助(“合并”)
。很好--我完全忘记了.GRP.Nice--我完全忘记了.GRP。