假设这是数据:
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”),问题解决了。
答案 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
来获取最后一位数字。