我需要将一堆.csv文件导入R。我使用以下代码进行此操作:
Dataset <- read.csv(paste0("./CSV/State_level/",file,".csv"),header = F,sep = ";",dec = "," , stringsAsFactors = FALSE)
输入是一个.csv文件,带有“,”作为小数点的分隔符。不幸的是,有很多条目如下:20,012,054。 这实际上应该是:20012,054并导致产生两个NA,但通常会将整个df导入为字符,而不是我想要的数字。
从左向右看时,并且数字在小数逗号前面有3个以上的数字时,如何去除第一个“”?
data.frame可能看起来像这样:
df<-data.frame(a=c(0.5,0.84,12.25,"20,125,25"), b=c("1,111,054",0.57,105.25,0.15))
我使用了“。”作为小数点分隔符(在这种情况下为数字),. csv中的数字是“,”,但这不是格式为123,45的数字的问题。
感谢您的想法和帮助!
答案 0 :(得分:4)
我们可以使用sub
来摆脱第一个,
df[] <- lapply(df, function(x) sub(",(?=.*,)", "", x, perl = TRUE))
仅在代码中只有一个,
的情况下,它才会离开,
sub(",(?=.*,)", "", c("0,5", "20,125,25"), perl = TRUE)
#[1] "0,5" "20125,25"