Просто используйте ifelse
напрямую:
df$Z5 <- ifelse(df$Z3 == "h1" | df$Z4 == "h10", df$Z1, df$Z2)
df
Z1 Z2 Z3 Z4 Z5
1 AB XX h1 h10 AB
2 BA YY h2 h20 YY
3 AB YY h1 h20 AB
4 BA XX h2 h10 BA
Данные:
df <- data.frame(Z1=c("AB", "BA", "AB", "BA"),
Z2=c("XX", "YY", "YY", "XX"),
Z3=c("h1","h2","h1","h2"),
Z4=c("h10","h20","h20","h10"), stringsAsFactors=FALSE)