我有一个数据文件,其中有三列:
20010101 000000 0.833
20010101 000500 0.814
20010101 001000 0.794
20010101 001500 0.772
...
Run Code Online (Sandbox Code Playgroud)
人眼相当清楚,前两个是日期和时间.我需要将它们转换为POSIXct(如果它更好的话,还是其他的东西,但我在R中处理时间戳的有限经验是使用POSIXct).通常情况下,使用read.table将其拉入,我会使用:
df$DateTime <- as.POSIXct(paste(df$Date, df$Time), format="%Y%m%d %H%M%S")
Run Code Online (Sandbox Code Playgroud)
但是,第二列似乎失去了它的前导零(可能通过类型强制?),因此它无法正常工作.
我看合并日期整数和时间因素POSIXct中的R和转换日期和时间数据的两列一个,但两者都使用时间带分隔符,如:,所以不要有同样的问题.
如何将这些列转换为POSIXct,好吗?
我有一个 SpatialPointsDataFrame,它有一个属性(为了方便起见,我们称之为 z)以及纬度/经度坐标。
我想把它写到一个 XYZ 文件(即一个包含三列的 ASCII 文件)。
最初我试过
write.table(spdf, filename, row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
但这首先在每一行上写入 z 值,然后是坐标。所以它是 ZXY 格式而不是 XYZ。也许没什么大不了的,但对于必须使用该文件的其他人来说很烦人。
目前,我正在使用一种感觉非常可怕的 bodge 来执行此操作(如下所示),但我的问题是:是否有一种很好且直接的方法可以将 SPDF 写为 XYZ,并且列的顺序正确?似乎应该很容易!
感谢您的任何建议。
博奇:
dfOutput <- data.frame(x = coordinates(spdf)[,1], y = coordinates(spdf)[,2])
dfOutput$z <- data.frame(spdf)[,1]
write.table(dfOutput, filename, row.names=FALSE)
Run Code Online (Sandbox Code Playgroud) 我需要编写一个太大的数组,以适应.mat二进制文件的内存.这可以通过matfile命令完成,该命令允许随机访问光盘上的.mat文件.
我正在尝试在此文件中预分配数组,并且MathWorks博客推荐的方法是
matObj = matfile('myBigData.mat','Writable',true);
matObj.X(10000,10000) = 0;
Run Code Online (Sandbox Code Playgroud)
这可行,但留下了大量的零 - 这是有风险的,因为我将填充它的一些真正的值也可能为零.对于较小的阵列,我通常会这样做
smallarray = nan(20,20);
Run Code Online (Sandbox Code Playgroud)
但是如果我为大型数组尝试这种方法,我会得到一个"内存不足"的错误; 可能这个nan()函数NaN首先在内存中产生大量的s.
如何使用除零之外的其他内容预先分配大型数组?
large-data ×2
matlab ×2
r ×2
arrays ×1
datetime ×1
file-io ×1
performance ×1
posixct ×1
spatial ×1