当我尝试将一些代码合并到代码描述时,我得到2个重复的列。我从这开始: 表名:测试
ID State
1 5
2 2
3 5
并希望将其与此合并: 表名:statecode
StateID State
5 Mass
2 NY
制作这样的表:
ID State
1 Mass
2 NY
3 Mass
但是,我得到一张这样的表:
ID State State
1 5 Mass
2 2 NY
3 5 Mass
我使用了这样的merge命令:
test = merge(x = test, y = statecode, by.x = "State", by.y = "StateID", all.x = T)
在这种情况下,除了合并之外还有更好的功能吗?也许只需用状态名替换状态代码?
非常感谢您的帮助!
答案 0 :(得分:3)
您必须说明要删除的列,但您可以使用<regions>
<region>
<name>North America</name>
<cult>infidel</cult>
<value>100</value>
</region>
<region>
<name>South America</name>
<cult>infidel</cult>
<value>99</value>
</region>
<region>
<name>Africa</name>
<cult>infidel</cult>
<value>99</value>
</region>
<region>
<name>Europe</name>
<cult>infidel</cult>
<value>100</value>
</region>
<region>
<name>Oceania</name>
<cult>infidel</cult>
<value>100</value>
</region>
<region>
<name>Asia</name>
<cult>infidel</cult>
<value>100</value>
</region>
</regions>
简洁地表达它。
根据您的数据生成样本数据(但更正列名称):
dplyr
使用test <- read.table(text =
"ID StateID
1 5
2 2
3 5", header = TRUE)
statecode <- read.table(text =
"
StateID State
5 Mass
2 NY", header = TRUE)
:
dplyr
答案 1 :(得分:2)
base R
的另一种方式:
Pmerge <- function(df1, df2) {
res <- suppressWarnings(merge(df1, df2, by.x = "State", by.y = "Code", all.x = T)[,-1])
newdf <- res[order(res$ID),]
row.names(newdf) <- 1:nrow(newdf)
newdf
}
Pmerge(Test, statecode)
ID State
1 1 Mass
2 2 NY
3 3 Mass