2013-01-19 32 views
2

我有用於保持一個ID和一個結果的數據幀:R 2與一個名稱替換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值?

謝謝你的幫助。

回答

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

你可以

merge(df,key,by="id" ,all = TRUE) 

然後刪除或根據需要更改列的名稱。

4

您可以簡單地使用merge

merge(df, key)[-1] 

(該-1刪除在合併後的數據幀中的ID列。)

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 
0

你也可以使用加入功能:

df1 <- df %>% 
    full_join(key, by = 'id') %>% 
    select(-id)