使用R从字符串中提取特定格式的子字符串(ID,代码)
Extracting a specific format substring (ID, code) from a string using R
假设我有一个数据框,由我使用 twitteR 收集的推文组成。我想提取一个子字符串,它是每个推文中包含的另一个数据集的唯一 ID。所有 ID 都采用相同的形式,即 3-4 个大写字母,后跟一个连字符,再后跟一个 6 位数字。例如:YLD-000123、YLSL-000323、YLP-000135。我只需要 ID,可以在每条推文中删除其他所有内容。
以下是我正在使用的推文的两个示例:
st1="Elijo ENTERTIMER, YLC-000354, como ganador para http://t.co/jclDk8d796 #YoungLionsCo #FantasyLions"
st2="Elijo #AEseTrenNoMeLeSubo, YLSL-000169, como ganador para http://t.co/wPpM7X5ecN #YoungLionsCo #FantasyLions"
tweets=c(st1,st2)
我需要的结果是"YLC-000354""YLSL-000169"。 ID 并不总是在逗号之间。
使用gsub
的方法:
gsub('.*[^[:alpha:]]([[:alpha:]]+-\d+).*','\1',tweets)
#[1] "YLC-000354" "YLSL-000169"
看来您需要 正则表达式,请参阅 ?regex
以供参考。
您要查找的模式是 '[[:alpha:]]{3,4}-[[:digit:]]{6}'
,如果 ID 中只包含大写字母,则最终是 upper
而不是 alpha
。在模式末尾添加 space 字符和 period/space 可能被认为可以消除一些相似的 ID。
要从推文向量中提取所有 ID,我建议使用 stringr
库中的 str_extract
。
gsub('.*(\b\w+\-\d+).*','\1',tweets)
# [1] "YLC-000354" "YLSL-000169"
假设我有一个数据框,由我使用 twitteR 收集的推文组成。我想提取一个子字符串,它是每个推文中包含的另一个数据集的唯一 ID。所有 ID 都采用相同的形式,即 3-4 个大写字母,后跟一个连字符,再后跟一个 6 位数字。例如:YLD-000123、YLSL-000323、YLP-000135。我只需要 ID,可以在每条推文中删除其他所有内容。
以下是我正在使用的推文的两个示例:
st1="Elijo ENTERTIMER, YLC-000354, como ganador para http://t.co/jclDk8d796 #YoungLionsCo #FantasyLions"
st2="Elijo #AEseTrenNoMeLeSubo, YLSL-000169, como ganador para http://t.co/wPpM7X5ecN #YoungLionsCo #FantasyLions"
tweets=c(st1,st2)
我需要的结果是"YLC-000354""YLSL-000169"。 ID 并不总是在逗号之间。
使用gsub
的方法:
gsub('.*[^[:alpha:]]([[:alpha:]]+-\d+).*','\1',tweets)
#[1] "YLC-000354" "YLSL-000169"
看来您需要 正则表达式,请参阅 ?regex
以供参考。
您要查找的模式是 '[[:alpha:]]{3,4}-[[:digit:]]{6}'
,如果 ID 中只包含大写字母,则最终是 upper
而不是 alpha
。在模式末尾添加 space 字符和 period/space 可能被认为可以消除一些相似的 ID。
要从推文向量中提取所有 ID,我建议使用 stringr
库中的 str_extract
。
gsub('.*(\b\w+\-\d+).*','\1',tweets)
# [1] "YLC-000354" "YLSL-000169"