R - 将数据帧转换为xts会添加引号(以xts为单位)

时间:2016-10-04 14:46:24

标签: r xts

我正在使用数据框来创建xts。 创建了xts但是所有值(xts中的索引除外)都在引号内。这导致我无法使用数据,因为诸如sum之类的许多功能都不起作用。

我有什么想法可以在没有报价的情况下获得xts吗?

这是我的代码[由于对dataframes / xts的不一致名称的评论而更新]:

# creates a dataframe with dates and currency
mydf3 <- data.frame(date = c("2013-12-10", "2015-04-01", 
"2016-01-03"), plus = c(4, 3, 2), minus = c(-1, -2, -4))
# transforms the column date to date-format
mydf3 = transform(mydf3,date=as.Date(as.character(date),format='%Y-%m-%d'))
# creates the xts, based on the dataframe mydf3
myxts3 <- xts(mydf3, order.by = mydf3$date)
# removes the column date, since date is now stored as index in the xts
myxts3$date <- NULL

1 个答案:

答案 0 :(得分:3)

您需要意识到在xts对象中存储数据的基础数据结构是一个R矩阵对象,它只能是一个R类型(例如所有数字或所有字符)。时间戳存储为单独的向量(在本例中为日期列),用于按时间对数据进行索引/子集化。

问题的原因是你的date列强制数据矩阵转换为字符类型矩阵(在xts对象中)而不是数字。当date类包含在矩阵中时,它似乎会转换为字符:

> as.matrix(mydf3)
     date         plus minus
[1,] "2013-12-10" "4"  "-1" 
[2,] "2015-04-01" "3"  "-2" 
[3,] "2016-01-03" "2"  "-4" 

只要您的数据中包含非数字数据,您就会转换为xts(x xts中的myxts3 <- xts(x= mydf3[, c("plus", "minus")], order.by = mydf3[, "date"]) > coredata(myxts3) plus minus [1,] 4 -1 [2,] 3 -2 [3,] 2 -4 > class(coredata(myxts3)) [1] "matrix" 参数),您就会遇到此类问题。

您的问题可以解决如下(wici已在评论中显示)

let url = "http://204.16.1.36/teste.asmx/MyImage?value=ok" 
Alamofire.request(url).responseJSON { response in
   debugPrint(response)
}