Вот решение tidyverse
.Обратите внимание, что я использовал stringsAsFactors = FALSE
, чтобы создать пример фрейма данных для избежания факторных столбцов.df2
- конечный результат.
library(tidyverse)
df2 <- df %>%
gather(Column, Value, -cond) %>%
mutate(Column2 = str_sub(Column, 1, 1)) %>%
mutate(Value = ifelse(map2_lgl(cond, Column2, ~str_detect(.y, .x)), Value, 0)) %>%
select(-Column2) %>%
spread(Column, Value)
df2
# cond aVal bVal
# 1 a 1 0
# 2 b 0 4
Данные
df <- data.frame(
cond=c("a","b"),
aVal=c(1 , 2),
bVal=c(3 , 4),
stringsAsFactors = FALSE
)