2013-07-31 67 views
0
其他两个变量的比赛

我有一个看似简单的问题,我不能回答:我有三个矢量:复制变量R中

x <- c(1,2,3,4) 
weight <- c(5,6,7,8) 
y <- c(1,1,1,2,2,2) 

我想创建一个新的载体该复制权重的值中的每个x中的元素相匹配ý使得其产生其中y相关联的以下新的权重向量的时间:

y_weight <- c(5,5,5,6,6,6) 

上如何做到这一点(或者循环或向量化)任何想法?谢谢

+1

'重使用[na.omit(比赛(Y,X))]' – Arun

回答

4

你想要match功能。

match(y, x) 

返回匹配的indicies,即建立新的权重向量

weight[match(y, x)] 
0
#Using plyr 

library(plyr) 
df<-as.data.frame(cbind(x,weight)) # converting to dataframe 
df<-rename(df,c(x="y")) # rename x as y for joining dataframes 
y<-as.data.frame(y) # converting to dataframe 
mydata <- join(df, y, by = "y",type="right") 
> mydata 
    y weight 
1 1  5 
2 1  5 
3 1  5 
4 2  6 
5 2  6 
6 2  6