我有一个CSV文件,其中包含逗号:“Afganis,tan” 我想用“_”替换逗号,所以我使用以下gsub
statments。 但是,当我打印结果数据框时,我看到该值分为两部分:一个在同一列(“Afganis”),第二个(“tan”)插入到下一列。我怎样才能克服这个问题,所以我会得到“Afganis_tan”?有没有办法将gsub
函数插入read.csv
函数? 附加是我试过的相关代码。如何将gsub函数插入到read.csv函数
df<- read.csv(inFile$datapath, header = input$header, sep = input$sep, quote = "")
ind<-sapply(1:ncol(df), function(x) { class(df[,x])=="factor"})
print(ind)
ind<-which(ind==TRUE)
if(length(ind)==1){
df[,ind]<-gsub('[^a-zA-Z0-9.]',"_",as.character(df[,ind]))
df[,ind]<-df('\\,',"_",as.character(df[,ind]))
df[,ind]<-df(',',"_",as.character(df[,ind]))
df[,ind]<-as.factor(df[,ind])
}
这里是输出(第9行是有问题的):
campaign_type country_name transaction_type cpa_price TIERS Year_Success_20.
1 CPM Afgha nistan Domestic 0 TIER_4_Asia 0
2 CPM Afg' hanistan Domestic 0 TIER_4_Asia 0
3 CPM Afgh' (anistan) Cross Optimized Advertiser 0 TIER_4_Asia 1
4 CPM Afgha-nistan Domestic 0 TIER_4_Asia 0
5 CPM "Afghan""istan""" Cross Optimized Advertiser 0 TIER_4_Asia 0
6 CPM Afghan~!#$%^@&*()_+|istan Domestic 0 TIER_4_Asia 0
7 CPM Afghanistan Domestic 0 TIER_4_Asia 0
8 CPM Afghanistan. Domestic 0 TIER_4_Asia 0
9 CPM "Afghan istan" Domestic 0.040995321 TIER_4_Asia
10
11 CPM Afghanistan Domestic 0 TIER_4_Asia 1
附件是链接到该文件。 File with versions to the string "Afganistan"
你应该做出[重现的实例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproduc ible-example)并包含样本数据。在将数据读入'df'后,'read.csv'确实与转换没有任何关系。只需包含一个'df'的输入。你想做什么与'df('\\,',“_”,as.character(df [,ind]))'' - 你似乎在调用'df()'作为一个函数。 “SPY”从哪里来? – MrFlick
您可以使用'data.table'库中的'fread()'函数。可以使用终端命令作为输入而不是文件路径,并在路径中应用gsub(或Windows等价物)。您还可以设置'sep2'参数来尝试和检测引号分隔符。 –
@MrFlick,我按照你的建议添加了更多信息。 – mql4beginner