我有一个包含id和结果的数据框:
df <- data.frame(id=c(1,4,3,3,2,1),result=c(90,75,45,56,78,66))
df
我还有一个密钥,其中包含每个id的名称:
key <- data.frame(id=c(1:4),name=c("Jon","Fred","Jane","Jim"))
key
如何用密钥中的名称值替换df中的id值?
感谢您的帮助。
答案 0 :(得分:4)
您只需使用merge
:
merge(df, key)[-1]
(-1
删除合并数据框中的ID列。)
答案 1 :(得分:4)
> df[["id"]] <- key[ match(df[['id']], key[['id']] ) , 'name']
> df
id result
1 Jon 90
2 Jim 75
3 Jane 45
4 Jane 56
5 Fred 78
6 Jon 66
答案 2 :(得分:2)
你可以
merge(df,key,by="id" ,all = TRUE)
然后根据需要删除或更改列的名称。
答案 3 :(得分:2)
df$id <- ave(df,df$id,
FUN = function(x) as.character(key$name[key$id==unique(x$id)]))[1]
df
id result
1 Jon 90
2 Jim 75
3 Jane 45
4 Jane 56
5 Fred 78
6 Jon 66
答案 4 :(得分:1)
您也可以使用 join 函数:
df1 <- df %>%
full_join(key, by = 'id') %>%
select(-id)