使用 write.zoo() 将动物园对象写入 CSV 文件时,我实际上希望将十进制精度从默认值 14 降低到 3。但是,即使在 options() 中设置了 scipen 和数字,我也没有能够降低输出的精度。
下面是一个示例代码来说明这个问题。
blah <- zoo(cbind(c(1.590833333333335, NA), c(NA, 21.590833333333337)))
index(blah) <- c("Dec 1985", "Dec 1986")
colnames(blah) <- c("FooHeader", "BarHeader")
options(scipen = 3, digits = 3)
write.zoo(blah, file = "blah.csv", sep = ",")
Run Code Online (Sandbox Code Playgroud)
如果我打开blah.csv文件,我会看到
"Index","FooHeader","BarHeader"
"Dec 1985",1.59083333333334,NA
"Dec 1986",NA,21.5908333333333
Run Code Online (Sandbox Code Playgroud)
但我真正想看到的是
"Index","FooHeader","BarHeader"
"Dec 1985",1.591,NA
"Dec 1986",NA,21.591
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能做到这一点?提前致谢!
注意:我知道通过降低精度,如果我再次将数据读入 R,我仍然会失去精度。没关系。我可以忍受这一点。
我需要向前填充 NA 值,即将 NA 替换为最后一个以前的非 NA 值。这是一个示例,但最后一行没有向前填充。我收到一个错误,指出要替换的值的数量与替换值的数量不同。我究竟做错了什么?
# Test time accumulation and assignment
foo_df <- NULL
nTimes = 10000
nEvents = 70
nUnits = 300
usageTimes = seq(0.5, 3, .5)
events = c("File Event", paste("Event ",seq(1,nEvents)))
randDates <- function(N, st="2014/01/01", et="2014/07/31") {
st <- as.POSIXct(as.Date(st))
et <- as.POSIXct(as.Date(et))
dt <- as.numeric(difftime(et,st,unit="sec"))
ev <- sort(runif(N, 0, dt))
rt <- st + ev
}
probEvent = rep(1, length(events))
probEvent[1] = 5
# Generate fake data with events, units, and event times
foo_df …Run Code Online (Sandbox Code Playgroud) 我有一个格式为 YYYYQ 的 char 字段(例如 20124、20131 等),我想使用 Zoo 包中的 as.yearqtr 将其转换为字段格式。
感谢您的帮助!
我正在使用package的rollmean功能zoo来计算一个简单的 7 天移动平均线。该函数有一个参数align,如果我输入“right”、“center”或“left”,它会更改值。它们之间有什么区别?
示例代码:
test <- sample(1:50)
data <- rollmean(test, 7, fill = list(NA, NULL, NA), align = "right")
test <- cbind(test, data)
Run Code Online (Sandbox Code Playgroud) 我正在阅读动物园常见问题解答,并发现了一些令我惊讶的事情.
"动物园"对象可以是(1)数字向量,(2)数字矩阵或(3)因子但可以不包含数字向量和因子.
期望这个举行是不合理的吗?这是不能实现的原因是什么zoo?基本上,我想将zoo对象视为具有时间排序的数据帧.
我想从年份和月份格式中减去给定日期的月份.
global_date = "2017-01"
Run Code Online (Sandbox Code Playgroud)
我正在使用zoo库将其转换如下:
as.yearmon(global_date) - 0.1
Run Code Online (Sandbox Code Playgroud)
但它给了我2016年11月,我希望它为'201612'
我怎么能在R?
我有一个类似于以下可重现的样本数据的庞大数据集.
Interval value
1 2012-06-10 552
2 2012-06-11 4850
3 2012-06-12 4642
4 2012-06-13 4132
5 2012-06-14 4190
6 2012-06-15 4186
7 2012-06-16 1139
8 2012-06-17 490
9 2012-06-18 5156
10 2012-06-19 4430
11 2012-06-20 4447
12 2012-06-21 4256
13 2012-06-22 3856
14 2012-06-23 1163
15 2012-06-24 564
16 2012-06-25 4866
17 2012-06-26 4421
18 2012-06-27 4206
19 2012-06-28 4272
20 2012-06-29 3993
21 2012-06-30 1211
22 2012-07-01 698
23 2012-07-02 5770
24 2012-07-03 5103
25 2012-07-04 775
26 2012-07-05 …Run Code Online (Sandbox Code Playgroud) 我试图用命令将对象保存到文本文件write.table(ESH2, "c:/ESH2.txt", sep=",").问题是保存的时间序列不包含我下载的日期和时间值.我使用了包twsInstrument和命令getBAT(ESH2)
使用该命令将其加载到R中时的数据 load(file = "C:/ESH2.Rdata")
ES.Bid.Price ES.Ask.Price ES.Trade.Price ES.Mid.Price ES.Volume
1323700200 1237.25 1237.50 1237.50 1237.375 6954
1324057980 1210.25 1210.50 1210.25 1210.375 3792
1324058040 1210.50 1211.00 1211.00 1210.750 3305
.........
.........
.........
1324058100 NA NA NA NA 823
attr(,".indexCLASS")
[1] POSIXct POSIXt
attr(,".indexTZ")
[1]
attr(,"from")
[1] 20111211 23:59:59
attr(,"to")
[1] 20111216 23:59:59
attr(,"src")
[1] IB
attr(,"updated")
[1] "2011-12-16 18:54:55 CET"
Run Code Online (Sandbox Code Playgroud)
第一列应显示Date_Time而不是1323700200.
我正在寻找一种简单的方法来每周下载一次数据并合并数据.
ps是的,我可以阅读教程/书籍来完成这一点,是的,我会这样做,但问题是我没有时间.我想本周开始收集数据,因为交互式经纪人正在限制数据请求1min data = 5DAYS maximum.我感谢任何帮助和建议.
我在R中有一个动物园对象的百分比变化.我想从1或100开始复合那些百分比变化,看看我们是否有复合扩展/衰减.
Lines <- "obs date pctchng comgrowth
1 2010-10-04 NA 100
2 2010-10-01 .15 NA
3 2010-09-30 .14 NA
4 2010-09-29 -.05 NA
5 2010-09-28 -.12 NA
6 2010-09-27 .07 NA
7 2010-09-24 -.15 NA
8 2010-09-23 .186 NA
9 2010-09-22 .01 NA
10 2010-09-21 .03 NA
11 2010-09-20 -.03 NA"
data <- read.zoo(textConnection(Lines), header=TRUE, index=2)
startobs <- 1
for (i in 1:100) {
data[startobs+i,"comgrowth"] <- data[startobs+i-1,"comgrowth"] *
(1+data[startobs+i,"pctchng"])
}
Run Code Online (Sandbox Code Playgroud)
我正在简化数据以简化显示,但这是我想要做的主意.我意识到问题是在加/减/除/乘时.出于某种原因我可以说data[startobs+i,"comgrowth"]=data[startobs+i-1,"comgrowth"]但是......
我不能说data[startobs+i,"comgrowth"]=data[startobs+i-1,"comgrowth"]+data[startobs+i-2,"comgrowth"].R不会让我添加+/ - /*等,并给我这个错误
Error in …Run Code Online (Sandbox Code Playgroud)