Я новичок в кодировании R. Мне нужна рука, чтобы найти элегантный способ сделать это:
У меня есть следующий фрейм данных:
> df = data.frame(pattern=c('a,b,c','b','c,b','c'), nb=c(150,100,30,10))
> df
pattern nb
1 a,b,c 150
2 b 100
3 c,b 30
4 c 10
В зависимости от наличия строки, я хочу фрейм данных такого типа:
pattern nb a b c
1 a,b,c 150 150 150 150
2 b 100 0 100 0
3 c,b 30 0 30 30
4 c 10 0 0 10
Я нахожу это решение:
df$a <- ifelse(grepl("a" , df$pattern), df$nb, 0)
df$b <- ifelse(grepl("b" , df$pattern), df$nb, 0)
df$c <- ifelse(grepl("c" , df$pattern), df$nb, 0)
Но в моем реальном случае я получил много разных паттернов. Я уверен, что есть способ с al oop или функцией. Конечно, я не прошу готового решения. Я просто спрашиваю, как это сделать. Большое спасибо заранее.
Привет из Франции
Арно