R - 基于代码列表对观察进行分组

时间:2017-04-18 17:20:29

标签: r for-loop

我有一个数据集,其中每个观察都有一个整数“代码”变量,我想将其转换为字符“class”变量。这是一个简单的例子来说明我想要做的事情。

code.list <- data.frame(code = 1:10, 
                    class = c("Class 1", "Class 2", "Class 3", "Class 4", "Class 5", 
                              "Class 6", "Class 7", "Class 8", "Class 9", "Class 10"))

set.seed(1)
data <- data.frame(code = rbinom(100000, 10, 0.5))

> head(code.list, 4)
  code   class
1    1 Class 1
2    2 Class 2
3    3 Class 3
4    4 Class 4

> head(data, 4)
  code
1    4
2    4
3    5
4    7

我想向data添加一个“class”变量,以便每个观察的类与code.list中相应的“代码”变量相匹配。有没有办法在不使用for循环并迭代每个观察的情况下执行此操作?

1 个答案:

答案 0 :(得分:3)

如果我理解你的问题,那么我猜你真的想查找/合并表格,如果有,那么你可以使用data.table来解决这个问题:

library(data.table)
data <- data.table(data)
code.list <- data.table(code.list)
data[code.list, class := i.class, on="code"]

谢谢Frank,我一直被指导在data.table中有更好的处理方式,我已经更新了相同的内容。

data[code.list, class := i.class,on="code"]

    > data
        code   class
     #1:    5 Class 5
     #2:    5 Class 5
     #3:    6 Class 6
     #4:    6 Class 6
     #5:    5 Class 5
    ---             
 #99996:    5 Class 5
 #99997:    6 Class 6
 #99998:    8 Class 8
 #99999:    6 Class 6
#100000:    5 Class 5
>