我有一个数据集,其中每个观察都有一个整数“代码”变量,我想将其转换为字符“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循环并迭代每个观察的情况下执行此操作?
答案 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
>