2
我有一个数字矢量,我从Excel中导入了格式为“奇怪”的方式。例如:12.000代表12000.我想将所有具有小数的数字变量转换为整个值(在本例中乘以1000--因为R读取12.000为12,而我真正想要的是12000)。我试图将其转换为字符,然后操作它以添加零。我不认为这是最好的方式,但我尝试这样的长相:将数字矢量转换为其他数字矢量
vec <- c(12.000, 5.300, 5.000, 33.400, 340, 3200)
vec <- as.character(vec)
> vec
[1] "12" "5.3" "5" "33.4" "340" "3200"
x <- "([0 -9]{1})"
xx <- "([0 -9]{2})"
x.x <- "([0 -9]{1}\\.[0 -9]{1})"
xx.x <- "([0 -9]{2}\\.[0 -9]{1})"
我创造了这个正则表达式所以我可以做的是创造条件,如果grep的(X,VEC)是真的,那么我做:paste0(“000”,vec)当vec在条件集合中为真时。我的想法是为所有可能的情况做到这一点,即:添加“000”如果x或如果xx &如果x.x或如果xx.x添加“00”
有没有人知道我能做什么?如果有更简单的想法?
谢谢!
请出示期望的结果。为什么不尝试用'colClasses =“character”'读入它,然后使用'as.numeric(gsub(“[。]”,“”,df $ V1))' –
'vec的内容不清楚'被派生/读入?应该有一个上游解决方案。 – Benjamin
你是如何从Excel导入数据的;先将它保存为CSV?您的问题是因为该文件使用大陆(欧洲)数字格式?如果是这样,你可能想检查在这个问题的最佳答案 http://stackoverflow.com/questions/6123378/how-to-read-in-numbers-with-a-comma-as-decimal-separator – Ricky