【发布时间】:2014-01-22 02:32:06
【问题描述】:
我有两个数据框
>cat a1.txt “501” 5.7916 6.9861 “502” 24.9444 18.45 “503” 4 4.7222 5.5 “505” 5 5.2777 5.3 >猫 a2.txt 501“亚历克斯” 第502章 503“罗密欧” 504“探戈” 第505章我希望能够将 a1.txt 中的第一列替换为 a2.txt(lookup) 中的对应值
我想要类似的东西-
亚历克斯 5.7916 6.9861 布赖恩 24.9444 18.45 罗密欧4 4.7222 5.5 泽 5 5.2777 5.3我试过了-
a1t <- read.table('a1.txt')
a2t <- read.table('a2.txt')
a1t
V1 V2 V3
1 501 5.7916 6.9861
2 502 24.9444 18.4500
3 503 4.0000 4.7222
4 505 5.0000 5.2777
> a2t
V1 V2
1 501 alex
2 502 brian
3 503 romeo
4 504 tango
5 505 zee
> merge(x=a1t, y=a2t,by='V1', all.x=TRUE)
V1 V2.x V3 V2.y
1 501 5.7916 6.9861 alex
2 502 24.9444 18.4500 brian
3 503 4.0000 4.7222 romeo
4 505 5.0000 5.2777 zee
但这并不能取代第一列。它增加了一列。 如何获得上述所需格式?
如果我的 a1.txt 不平衡怎么办?即其中的列数在所有行中都不一致?
【问题讨论】:
-
您可以使用
match或将其转换为`factor`并替换levels。 -
供参考:这是question that has many ways to do this in R。其中包括以下功能/包:
merge(), plyr, data.table, sqldf