gpt4 book ai didi

读取列中包含逗号的 CSV 文件

转载 作者:行者123 更新时间:2023-12-04 12:38:06 24 4
gpt4 key购买 nike

我有一个包含 6 列的 csv 文件,其中一列的文本以逗号分隔,例如,BOLT、RD HD SQ SHORT NECK、METRIC。

当我在 R 中读取此文件时,此列溢出,随后数据移至新行。

下面我贴几行

014003051906,ETN5080 ,0450,BOLT KIT UPPER SHAFT WITH 5 SPEED,1.000,F 014003051906,ETN5967 ,0460,SENSOR SENSOR FH BACKSHAFT SPEED,1.000,F 014003051906,ETN64267 ,0470,TILT UNIT SENSOR,1.000,F

014003065376,03M7184 ,0020,BOLT - M 8.0 X 1.250 X 20.0 - 8.8-Zinc,4.000,G 014003065376,03M7386 ,0090,BOLT, RD HD SQ SHORT NECK, METRIC,18.000,G 014003065376,14M7296 ,0090,NUT, METRIC, HEX FLANGE,14.000,G

最后两行是问题所在。 “NUT、METRIC、HEX FLANGE”应该属于一个变量。

如何解决?

最佳答案

data <- readLines(con = textConnection("014003051906,ETN5080 ,0450,BOLT KIT UPPER SHAFT WITH 5 SPEED,1.000,F
014003051906,ETN5967 ,0460,SENSOR SENSOR FH BACKSHAFT SPEED,1.000,F
014003051906,ETN64267 ,0470,TILT UNIT SENSOR,1.000,F

014003065376,03M7184 ,0020,BOLT - M 8.0 X 1.250 X 20.0 - 8.8-Zinc,4.000,G
014003065376,03M7386 ,0090,BOLT, RD HD SQ SHORT NECK, METRIC,18.000,G
014003065376,14M7296 ,0090,NUT, METRIC, HEX FLANGE,14.000,G"))

pattern <- "^([^,]*),([^,]*),([^,]*),(.*),([^,]*),([^,]*)$"

library(stringr)
str_match(data, pattern)[, - 1]
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] "014003051906" "ETN5080 " "0450" "BOLT KIT UPPER SHAFT WITH 5 SPEED" "1.000" "F"
# [2,] "014003051906" "ETN5967 " "0460" "SENSOR SENSOR FH BACKSHAFT SPEED" "1.000" "F"
# [3,] "014003051906" "ETN64267 " "0470" "TILT UNIT SENSOR" "1.000" "F"
# [4,] NA NA NA NA NA NA
# [5,] "014003065376" "03M7184 " "0020" "BOLT - M 8.0 X 1.250 X 20.0 - 8.8-Zinc" "4.000" "G"
# [6,] "014003065376" "03M7386 " "0090" "BOLT, RD HD SQ SHORT NECK, METRIC" "18.000" "G"
# [7,] "014003065376" "14M7296 " "0090" "NUT, METRIC, HEX FLANGE" "14.000" "G"

编辑:
初学者的正则表达式解释,用通俗易懂的话请原谅不准确的地方:

  • 开头的^和结尾的$表示字符串的开始和结束。
  • Parens 用于分组(str_match() 将提取的组)。
  • . 表示任意字符,.* 表示任意数量的任意字符。
  • [^,] 表示任何不是逗号的字符。

放在一起时,表示:字符串开头 - 没有逗号的子字符串 - 逗号(重复3次) - 可能包含逗号的子字符串 - 逗号 - 没有逗号的子字符串 - 逗号 - 没有逗号的子字符串 - 字符串结束,并且只提取括号内的组。

关于读取列中包含逗号的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613014/

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