填充与 R 中的参考向量对应的观测值

  • 本文关键字:参考 填充 向量 r loops fill
  • 更新时间 :
  • 英文 :


我有两个向量,一个(v.num)对应于df中的一个变量,另一个(v.type)是一个向量,我想用相应的向量填充到df中。

 v.num<-c(5, 6, 7, 8, 9, 10, 11)
 v.type<-c(1, 3, 5, 2, 2, 4, 1)

df 如下所示:

set.seed(2016)
df <- data.frame(v.num=sample(5:11, 40000, replace=TRUE), obs=rnorm(40000))

我想做的是创建一个v.type向量并存储对应于v.num的 v.type

喜欢:

head(df)
     v.num    obs    v.type
 1     6  1.6149522    3
 2     6 -0.2676644    3
 3    10  0.3013365    4
 4     5 -0.8514377    1
 5     8  0.5786278    2
 6     5 -1.2974004    1

我试过了

for(i in 1:nrow(df)){
    for(v in 1:length(v.num){
    if(v.num[v]==df$v.num[i]){df$v.type[i]<-v.type[v]}
  }}    

但这需要很长时间,因为我有 40000 行。完成此任务的最有效方法是什么?

查看以下代码:

v.num<-c(5, 6, 7, 8, 9, 10, 11)
v.type<-c(1, 3, 5, 2, 2, 4, 1)
set.seed(2016)
df <- data.frame(v.num=sample(5:11, 40000, replace=TRUE), obs=rnorm(40000))

df$v.type <- v.type[match(df$v.num, v.num)]

最新更新