我在PostgreSQL 9.2中有下表,其中包含时间戳:
GID [PK](BIGSERIAL),timestamp_mes(时间戳没有时区),time_diff(间隔)
1,2012-01-23 11时03分40秒,空
2,2012-01-23 11时03分42秒,空
3, 2012-01-23 11:03:44,空的
我添加了一个间隔列(time_diff),并希望用此查询产生的时差值填充它:
SELECT timestamp_mes - lag(timestamp_mes, 1)
over (order by timestamp_mes) as diff
from gc_entretien.trace order by timestamp_mes
Run Code Online (Sandbox Code Playgroud)
我尝试了以下查询来更新time_diff列,但没有成功:
UPDATE gc_entretien.trace set time_diff =
(SELECT trace.timestamp_mes - lag(trace.timestamp_mes, 1)
over (order by trace.timestamp_mes)
from gc_entretien.trace order by timestamp_mes);
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
错误:用作表达式的子查询返回的多行
我应该如何使用时差查询生成的值更新time_diff列?
在R中,我有SpatialPolygons包含几百个多边形的单个对象(即多多边形).我想将此SpatialPolygons对象拆分为一个列表Polygons(即孔应保持附加到父多边形).
知道怎么做吗?
编辑:
使用sp包中提供的以下示例:
# simple example, from vignette("sp"):
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)
Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
Run Code Online (Sandbox Code Playgroud)
然后跑out = lapply(SpP@polygons, slot, "Polygons").我得到三个列表Polygons(即Srs1,Srs2,Srs3).
但是,我试图解决的情况与此示例略有不同.SpatialPolygons我试图拆分的对象是使用gUnaryUnion函数(在RGEOS包中)完成几何联合的结果.如果我申请out <- lapply(merged.polygons@polygons, slot, "Polygons"),我会获得一个唯一的Polygon对象列表(nb不是Polygons …
我正在尝试使用psql \COPY命令(而不是SQL COPY)将.csv文件中的数据导入到postgresql 9.2数据库中.
输入.csv文件包含一个时间戳为dd.mm.yyyy hh.mm.ss格式的列.
我使用了将数据库日期样式设置为DMY.
set datestyle 'ISO,DMY'
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我运行\COPY命令时:
\COPY gc_test.trace(numpoint,easting,northing,altitude,numsats,pdop,timestamp_mes,duration,ttype,h_error,v_error)
FROM 'C:\data.csv' WITH DELIMITER ';' CSV HEADER ENCODING 'ISO 8859-1'
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误:日期/时间字段值超出范围:"16.11.2012 07:10:06"
提示:也许你需要一个不同的"日期风格"设置.
语境:COPY trace,第2行,列timestamp_mes:"16.11.2012 07:10:06"
datestyle有什么问题?
我有一个数据框,每列有以下变量类:
"date" "numeric" "numeric" "list" "list" "numeric"
Run Code Online (Sandbox Code Playgroud)
每行中的数据如下所示:
1978-01-01, 12.5, 6.3, c(0,0,0.25,0.45,0.3), c(0,0,0,0.1,0.9), 72
Run Code Online (Sandbox Code Playgroud)
我想将其转换为矩阵或数据框,每列一个值,因此结果应如下所示:
1978-01-01, 12.5, 6.3, 0, 0, 0.25, 0.45, 0.3, 0, 0, 0, 0.1, 0.9, 72
Run Code Online (Sandbox Code Playgroud)
我尝试过使用:
j<-unlist(input)
output<-matrix(j,nrow=nrow(input),ncol=length(j)/nrow(input))
Run Code Online (Sandbox Code Playgroud)
但它会混淆输出中行的顺序.
任何的想法?
附加信息:
上面的示例略有简化,并dput(head(input))返回以下示例:
structure(list(DATE = structure(c(2924, 2925, 2926, 2927, 2928,
2929), class = "Date"), TEMP_MEAN_M0 = c(-7.625, -7.375, -6,
-5.5, -7.625, -9.625), SLP_MEAN_M0 = c(1012.125, 991.975, 989.825,
986.675, 988.95, 993.075), WIND_DIR_RF_M0 = structure(list(`2.counts` = c(0,
0.625, 0, 0, 0, 0, 0, 0, 0, 0, 0, …Run Code Online (Sandbox Code Playgroud)