wangjh1984 比如: 表1: ID Var1 A 5 B 9 C 10 D 34 ; 表2: ID Var2 C 144464 A 3599353 D 399533 B 873393 ; 如何根据ID对表1和表2进行合并成如下格式? ID Var1 Var2 A 5 3599353 B 9 873393 C 10 144464 D 34 399533 多谢!
wangjh1984 多谢! 如果我不将表1和表2进行合并,仅仅将表2的ID变量参照表1的ID变量的顺序进行排序如何操作? 即参照表1,表2变成: ID Var2 A 3599353 B 873393 C 144464 D 399533
wangjh1984 [quote]引用第3楼wangjh1984于2008-08-29 20:28发表的“”: 多谢! 如果我不将表1和表2进行合并,仅仅将表2的ID变量参照表1的ID变量的顺序进行排序如何操作? 即参照表1,表2变成: .......[/quote] 看了了xie的一个关于索引的例子得到了答案: names(表2$Var2)=表2$Var1 表2$Var2[表1$Var1]
paladin_aj 我只会用SAS,你可以参考 用proc sort 进行对你选择的变量的重新排列,然后用一个merge语句把两个dataset 进行合并 例如 proc sort data=old_1 out=new_1; by variable-name; run; 第二个dataset按照这个就可以, 然后 data newdataset; merge new_1 new_2; by variable_name; run;
houliping [quote]引用第6楼wangjh1984于2008-08-30 12:13发表的“”: 看了了xie的一个关于索引的例子得到了答案: names(表2$Var2)=表2$Var1 表2$Var2[表1$Var1] [/quote] 我试了试好像不可行,并且就算可以也只是得到了表2的Var2这一个变量按照表1的Var1的顺序排列,不是表2的所有变量都按照表1的Var1的顺序排列。 我看用rownames()函数倒是很容易实现某一data frame按另一data frame的某个变量排序。 给个简单的例子: x <- data.frame(id=c("A","B","C","D"),height=c(155,165,175,176), stringsAsFactors = F) y <- data.frame(id=c("D","B","C","A"),weight=c(52,65,68,72), stringsAsFactors = F) 将x数据框按照y数据框的id的顺序排序: rownames(x)=x$id x[y$id,] 当然这样做必须满足一个条件,就是排序的变量必须没有重复的值。