3

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

5 に答える 5

5

あなたは単に使用することができますmerge

merge(df, key)[-1]

-1は、マージされたデータフレームのID列を削除します。)

于 2013-01-19T18:54:29.593 に答える
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
于 2013-01-19T19:04:07.893 に答える
2

あなたは出来る

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

次に、必要に応じて列の名前を削除または変更します。

于 2013-01-19T18:53:25.070 に答える
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
于 2013-01-19T19:15:50.380 に答える
2

また、結合関数 を使用することもできます。

df1 <- df %>%
  full_join(key, by = 'id') %>%
  select(-id)
于 2018-02-07T18:23:25.337 に答える