match
- это обычный способ сделать это:
df$id.2 = df$id.1[match(df$column2, df$column1)]
df
# column1 id.1 column2 id.2
# 1 A 1 C 3
# 2 A 1 B 2
# 3 B 2 B 2
# 4 C 3 A 1
# 5 C 3 D NA
Или используя синтаксис dplyr
:
mutate(df, id.2 = id.1[match(column2, column1)])
Используя эти данные:
df = read.table(text = 'column1 id.1 column2
A 1 C
A 1 B
B 2 B
C 3 A
C 3 D', header = T)