提取数字的最后一位数字

时间:2014-04-10 17:31:27

标签: string r digits

假设这是数据:

2011/03/06,17:24:17.100,EUR/USD,1.40200,3000000

我想提取价格的最后一位数,即使它是零。这是代码:

library(data.table)
library(stringr)
types<-list(date="TEXT",time="TEXT",curr="TEXT",price="TEXT",volume="INTEGER")
mydata=read.table("data.out", sep="," , header=FALSE)
setnames(mydata, names(types))
str_sub(mydata$price,start=-1)

这是结果:“2”,它忽略了零。我把价格作为文字阅读,所以我应该得到“0”。

编辑,感谢jlhoward:

mydata&lt; -read.table(...)正在自动将price和volume列转换为数字。我使用了mydata&lt; - read.table(...,colClasses =“character”),问题解决了。

2 个答案:

答案 0 :(得分:0)

以下是我在评论中谈到的方法。

   line = "2011/03/06,17:24:17.100,EUR/USD,1.40200,3000000"
    sp = line.split(",")
    sp
    ['2011/03/06', '17:24:17.100', 'EUR/USD', '1.40200', '3000000']
    price = sp[-2]
    price
    '1.40200'
    last = price[-1]
    last
    '0'

答案 1 :(得分:0)

您没有说明数据的来源。如果您对文件使用read.csv,则会立即将项目分隔为列。你甚至可以从键盘上取下它们,例如:

read.csv(stdin(),header=FALSE)
0: 300,hello,40.2
1: 
#   V1    V2   V3
# 1 300 hello 40.2

然后你可以像我上面的评论一样foo<- dat$V3%%10来获取最后一位数字。