将csv数据导入R时出现的问题,其中数据包含其他逗号

将csv数据导入R时出现的问题,其中数据包含其他逗号,r,csv,R,Csv,我有一个非常大的数据集,为了便于说明,它看起来像下面这样 客户ID、销售助理、商店 玛丽,沃辛顿,123,22 456,杰克,查尔斯,42岁 实际数据有更多的列和数百万行。我正在使用下面的代码将其导入R,但由于一个或多个列的数据中有一个逗号(请参见上面的Sales_Assistant),因此它正在崩溃 df <- read.csv("C:/dataextract.csv", header = TRUE , as.is = TRUE , sep = "," , na.strings = "N

我有一个非常大的数据集,为了便于说明,它看起来像下面这样

客户ID、销售助理、商店 玛丽,沃辛顿,123,22 456,杰克,查尔斯,42岁

实际数据有更多的列和数百万行。我正在使用下面的代码将其导入R,但由于一个或多个列的数据中有一个逗号(请参见上面的Sales_Assistant),因此它正在崩溃

df <- read.csv("C:/dataextract.csv", header = TRUE , as.is = TRUE , sep = "," , na.strings = "NA" , quote = "" , fill = TRUE , dec = "." , allowEscapes = FALSE , row.names=NULL)
Adding row.names=NULL导入了所有数据,但它将Sales_Assistant列拆分为两列,并使所有其他数据失去对齐。如果我在没有这个的情况下运行代码,我会得到一个错误

read.tablefile=file,header=header,sep=sep,quote=quote中出错:不允许重复的“row.names”

…数据将无法加载


您能想出一种不涉及在源代码处处理数据或在文本编辑器中打开数据的解决方法吗?R中有解决方案吗?

首先,它是一个csv文件。玛丽,沃辛顿要回应两个专栏。如果您的值中有逗号,请考虑使用TSV制表符分隔值保存数据。

但是,如果数据在某个意义上每行具有相同的逗号,并具有良好的对齐性,那么在读取数据帧的文件并重新分配正确的列名时,我会考虑忽略列的第一行。p> 例如,在您的情况下,您可以用

Sales_Assistant_First_Name, Sales_Assistant_Last_Name
这很有道理。那我基本上可以做到

df <- df[-1, ]    
colnames(df) <- c("Cust_ID" , "Sales_Assistant_First_Name" , "Sales_Assistant_Last_Name", "Store")

它可能需要一些修改,具体取决于实际来源

我喜欢你处理这个问题的方式,它一直工作到我运行的时候。。。colnamesdf此问题与df_cnames数据相关。下面的代码修复了它。。。df_cnames您也可以将stringsAsFactors=FALSE作为参数添加到read.csv。甚至可以使用选项StringsAsFactors=FALSE将其设置为全局。将字符串作为因素阅读往往会让人困惑,而不是有帮助。感谢您的贡献。对于数据集来说,这有点过于手动,因为有几个列受所述问题的影响,我宁愿使用基于代码的解决方案,也不愿手动键入不同的列名称:
df <- read.csv("C:/dataextract.csv", skip = 1, header = FALSE)
df_cnames <- read.csv("C:/dataextract.csv", nrow = 1, header = FALSE)

df <- within(df, V2V3 <- paste(V2, V3, sep = ''))
df <- subset(df, select = (c("V1", "V2V3", "V4")))
colnames(df) <- df_cnames