2016-12-27 7 views
0
df <- data.frame(id = 1:10, key = 1:10) 
replace_key <- c(2,5) 
replace_id <- c(9,3) 

私はreplace_idIDでデータフレームの値を置き換える方法は?

によってREPLACE_KEYの値に必要な効果キーの値を置き換えたい:私たちは二つのベクトルreplace_idmapplyを使用してreplace_keyそれぞれのキーを見つけて割り当てることができ

id key 
1 1 
2 2 
3 5 
4 4 
5 5 
6 6 
7 7 
8 8 
9 2 
10 10 

答えて

2

一意のIDを持つと仮定すると、matchを使用して、キーを置き換える必要のある行インデックスを見つけて、key列のこれらの位置にreplace_keyを割り当てます。対応する要素は、順番に置き換えられます。ここでは

df$key[match(replace_id, df$id)] <- replace_key 

df 
# id key 
#1 1 1 
#2 2 2 
#3 3 5 
#4 4 4 
#5 5 5 
#6 6 6 
#7 7 7 
#8 8 8 
#9 9 2 
#10 10 10 
1

をそれぞれの値は<<-

mapply(function(x, y) df$key[df$id == x] <<- y, replace_id, replace_key) 

df 
# id key 
#1 1 1 
#2 2 2 
#3 3 5 
#4 4 4 
#5 5 5 
#6 6 6 
#7 7 7 
#8 8 8 
#9 9 2 
#10 10 10 
0

data.table

library(data.table) 
setDT(df)[data.frame(id = replace_id, val= replace_key), key := as.integer(val), on = "id"] 
df 
# id key 
# 1: 1 1 
# 2: 2 2 
# 3: 3 5 
# 4: 4 4 
# 5: 5 5 
# 6: 6 6 
# 7: 7 7 
# 8: 8 8 
# 9: 9 2 
#10: 10 10 
と参加のオプションです
関連する問題