R用名称替换id值

时间:2013-01-19 18:47:52

标签: r

我有一个包含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值?

感谢您的帮助。

5 个答案:

答案 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)