我有用於保持一個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值?
謝謝你的幫助。
我有用於保持一個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值?
謝謝你的幫助。
> 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
你可以
merge(df,key,by="id" ,all = TRUE)
然後刪除或根據需要更改列的名稱。
您可以簡單地使用merge
:
merge(df, key)[-1]
(該-1
刪除在合併後的數據幀中的ID列。)
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
你也可以使用加入功能:
df1 <- df %>%
full_join(key, by = 'id') %>%
select(-id)