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と結果を保持するデータフレームがあります。
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値をキーの名前値に置き換えるにはどうすればよいですか?
ご協力ありがとうございました。
あなたは単に使用することができますmerge
:
merge(df, key)[-1]
(-1
は、マージされたデータフレームの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)
次に、必要に応じて列の名前を削除または変更します。
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)