Мы можем использовать match
, чтобы получить индекс строки, в которой 'Target' из 'Subject' 1 совпадает с другими Subject, а затем назначить его столбцу 'Valence' на основе индекса
i1 <- df1$Subject != 1
df1$Valence[i1] <- with(df1,
Valence[match(Target[i1], Target[!i1])])
df1
# Subject Target Valence
#1 1 annoy n
#2 1 beauty p
#3 1 shirt o
#4 1 succeed p
#5 2 beauty p
#6 2 annoy n
#7 2 succeed p
данные
df1 <- structure(list(Subject = c(1L, 1L, 1L, 1L, 2L, 2L, 2L), Target = c("annoy",
"beauty", "shirt", "succeed", "beauty", "annoy", "succeed"),
Valence = c("n", "p", "o", "p", NA, NA, NA)),
class = "data.frame", row.names = c(NA,
-7L))