Biraz daginik bir cozum oldu ama tam istediginizi veriyor su:
prntscr.comdf$interesting <- NA
df$appealing <- NA
for (cases in unique(df$case)){
for (pro in 1:length(unique(df$product))){
indx <- which(df$product==pro)
intname <- paste0("i",pro)
df$interesting[indx] <- df[indx,names(df) == intname]
apname <- paste0("a",pro)
df$appealing[indx] <- df[indx,names(df) == apname]
}
}