gpt4 book ai didi

r - 使用 R 解码 GS1 字符串

转载 作者:行者123 更新时间:2023-12-05 04:20:28 25 4
gpt4 key购买 nike

在数据框中,一列包含从条形码扫描的 GS1 代码。 GS1 代码是一个包含不同类型信息的字符串。应用程序标识符 (AI) 指示字符串的下一部分是什么类型的信息。以下是 GS1 字符串的示例:(01)8714729797579(17)210601(10)23919374AI 在括号中表示。在这种情况下,(01) 表示“GTIN”,(17) 表示“过期日期”,(10) 表示“LOT”。我喜欢在 R 中做的是从单个列创建三个不同的列,使用 AI 作为新的列名。

我尝试使用“separate”,但没有删除括号。为什么不删除括号?

df <- data.frame(id =c(1, 2, 3), CODECONTENT = c("(01)871(17)21(10)2391", "(01)579(17)26(10)9374", "(01)979(17)20(10)9193"))

df <- df %>% separate(CODECONTENT, c("GTIN", "Expiration_Date"), "(17)", extra = "merge") %>%
separate(Expiration_Date, c("Expiration Date", "LOT"), "(10)", extra = "merge")

以上返回以下内容:

<表类="s-表"><头><日> id<日>全局贸易项目代码 到期日很多<正文>11(01)871()21()239122(01)579()26()937433(01)979()20()9193

我不确定为什么括号还在那里。除了删除括号之外,是否还有更智能的方法来删除同一代码中的第一个 AI (01)?

最佳答案

因为括号符号是特殊字符,所以您需要告诉正则表达式按字面意思对待它们。一种选择是将它们括在方括号中。

df %>% 
separate(col = CODECONTENT,
sep = "[(]17[)]",
into = c("gtin", "expiration_date")) %>%
separate(expiration_date,
sep = "[(]10[)]",
into = c("expiration_date", "lot"),
extra = "merge")


id gtin expiration_date lot
1 1 (01)871 21 2391
2 2 (01)579 26 9374
3 3 (01)979 20 9193

关于r - 使用 R 解码 GS1 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74451973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com