以下是我的数据框:
a <- data.frame(id=c(rep("A",2),rep("B",2)),
x=c(rep(2,2),rep(3,2)),
p.ABC= c(1,NA,1,1),
p.DEF= c(NA,1,NA,NA),
p.TAR= c(1,NA,1,1),
p.REP= c(NA,1,1,NA),
p.FAR= c(NA,NA,1,1))
我想创建一个新的字符列(使用R中的库中的),它按行告诉哪些列的名称具有非NA值(这里非NA值始终为1)。但是,它应该仅在以"p."开头的列中搜索,并按字母顺序排序名称,然后使用" _ "作为分隔符连接它们。您可以在下面找到所需的结果,在名为" name "的列下:
data.frame(id=c(rep("A",2),rep("B",2)),
x=c(rep(2,2),rep(3,2)),
p.ABC= c(1,NA,1,1),
p.DEF= c(NA,1,NA,NA),
p.TAR= c(1,NA,1,1),
p.REP= c(NA,1,1,NA),
p.FAR= c(NA,NA,1,1),
name=c("ABC_TAR","DEF_REP","ABC_FAR_REP_TAR","ABC_FAR_TAR"))
我想强调的是,我确实希望使用dplyr
来解决问题,因为如果不用它,虽然也可以完成任务,但代码看起来不太美观且运行速度较慢。
str_remove(name, ".*\\.")
究竟是做什么的? - Anthony Hauserp.
的字符串,即.*
前面的 0 或多个字符一直到遇到.
(.
是元字符,用于匹配任何字符,因此我们需要转义),然后将其删除(因为它不在您的期望结果中)。 - akrunpmap
时通常会发生这种情况。 - Anoushiravan Rc(...)
是什么意思? - Alvaro Morales