首页 > 解决方案 > R分析大数据框列中的字符串并在单独的列中给出值

问题描述

我有一个包含 20 列的数据框。其中一列由字符串组成。我想分析 R 中特定字母位置的字符串,然后在不同的列中基于此分配一个值。例如,如果字符串是 ABCDEF、AADFEG,我想创建一个包含值的新列,如果 A 位于位置 1,则为 1。如果 A 位于位置 1,2,则为 1,2。7 如果 G 位于第 6 位。我一直在尝试使用 str_locate 和 if_else,然后使用 dplyr 包进行变异,但不确定是否有更简单的方法可以做到这一点。谢谢!

标签: rstring

解决方案


我创建了一个小代码片段:

df<-data.frame(a=c("ABCDEF","AADFEG","TRETGTGA"))
df$b<-lapply(gregexpr(pattern = 'A', df$a), function(x) c(unlist(x)) )

在这里,您在向量df$a的每个条目上应用正则表达式并找到模式A ,从而得到所有A的索引。使用lapply提取结果(=索引)。最后,您将结果分配给数据框中的新列。

笔记

如果找不到模式,则显示 -1。


推荐阅读