【发布时间】:2020-07-29 15:08:58
【问题描述】:
我是 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)
但在我的真实案例中,我得到了很多不同的模式。我确信有一种方法可以使用循环或函数。 当然,我并不是要一个现成的解决方案。我只是想知道如何做到这一点。 非常感谢。
来自法国的问候
阿诺
【问题讨论】: