问题描述
美好的一天,
我目前正在处理一个数据集,其中有一列采用这种格式。
PA-121-1512-asa-1241
PWW-121-1571-accs-21561
PSAWA-171-1616-gfaa-161
QSF-16-1613-63-asdfa
H-Elevator-15-asf-1112
QSF-asa-sda-afas-112
“-”符号之前的第一个字母序列被标识为“建筑位置”,因此我想将这些第一个字母序列保存在单独的列中。
我想知道如何选择 > 复制 > 将这些值粘贴到新列中,这样我最终会得到一列,例如:
地点:
PA
PPW
PSAWA
QSF
H
QSF
我尝试了这个功能:
str_extract("PA-121-1512-asa-1241",".+?(?<=-)")
PA-121-1512-asa-1241 是我选择整列的示例。
这里我打印出来的是 PA- 而不仅仅是 PA。
如果需要更多数据,需要更详细的解释,请告诉我。我对在这个网站上写问题还是很陌生。
节日快乐!, 教育部
发帖...
在再次查看我的代码以复制粘贴 Cyrus 先生建议的正确示例后,我发现了我的错误。而不是:
str_extract("PA-121-1512-asa-1241",".+?(?<=-)")
就是:
str_extract("PA-121-1512-asa-1241","[^-]+")
这将返回 PA 而不是 PA-
这表明阅读您的代码 50 倍确实有帮助,因为之前的 49 倍没有帮助。
如果有人有更优雅/更高效的方法,我仍然很感兴趣!由于在 500 万行中运行此代码花了我很长时间。
解决方法
代替:
str_extract("PA-121-1512-asa-1241",".+?(?
str_extract("PA-121-1512-asa-1241","[^-]+")
这将返回“PA”而不是“PA-”
这表明阅读代码 50 倍确实有帮助,因为之前的 49 倍没有。
str_extract() 所需的“模式”格式非常令人困惑。我的老师建议我阅读更多关于 Grep 的内容。