首页 > 解决方案 > 从 R 中的下一行赋值

问题描述

我有您当前所在的国家/地区:印度或新加坡之类的数据。

我需要将“印度或新加坡”分配给变量国家。我正在尝试使用

word(mytext[which(str_detect(mytext,"Country"))+1],1:3,sep = fixed(' '))

但它无法正确分配。国家和值在不同的行中如何修改我的代码以分配正确的值。?

标签: rregexstring

解决方案


如果您打算匹配Country:/Country到下一个逗号之后的所有文本,您可以使用

Country(?:\s*:)?\s*([^,]*)

查看正则表达式演示

如果您确定您只需要 3 个字之后Country,请使用

Country(?:\s*:)?\s*([\w'-]+(?:\s+[\w'-]+){2})

请参阅此正则表达式演示

在 R 中,使用stringr::str_match

stringr::str_match(text, "Country(?:\\s*:)?\\s*([^,]*)")[,2]
stringr::str_match(text, "Country(?:\\s*:)?\\s*([\\w'-]+(?:\\s+[\\w'-]+){2})")[,2]

图案细节

  • Country- 文字字符串
  • (?:\s*:)?- 一个可选的 0+ 空格序列,然后是一个冒号
  • \s*- 0+ 个空格
  • ([^,]*)- 捕获组 #1 匹配 0 个或多个除逗号以外的字符。

推荐阅读