Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一次重塑4个变量的形状R_R_Variables_Reshape - Fatal编程技术网

一次重塑4个变量的形状R

一次重塑4个变量的形状R,r,variables,reshape,R,Variables,Reshape,我有一个数据集,它根据纬度和经度将工人ID的家庭ID和工作ID分开,但都在同一行中。我想重塑long,使HOME_ID和WORK_ID以及其他变量位于同一列中。数据示例如下所示: WORKER_ID WORK_ID HOME_ID LAT_WORK LONG_WORK LAT_HOME LONG_HOME 32435353 23434343 32435353 39.54 41.53 39.64 42.43 我希

我有一个数据集,它根据纬度和经度将工人ID的家庭ID和工作ID分开,但都在同一行中。我想重塑long,使HOME_ID和WORK_ID以及其他变量位于同一列中。数据示例如下所示:

WORKER_ID    WORK_ID    HOME_ID    LAT_WORK   LONG_WORK    LAT_HOME   LONG_HOME
32435353     23434343   32435353   39.54      41.53       39.64        42.43
我希望它看起来像这样:

WORKER_ID   ID        LAT   LONG
32435353   23434343   39.54 41.53  
32435353   32435353   39.64 42.43

当我尝试重塑时,我收到了一堆错误消息,我想知道是否有人知道正确的语法。提前谢谢。

我们可以使用
数据表中的
熔化

library(data.table)
melt(setDT(df1), measure = patterns("(WORK|HOME)_ID", "LAT", "LONG"),
  value.name = c("ID", "LAT", "LONG"))[, variable := NULL][]
#    WORKER_ID       ID   LAT  LONG
#1:  32435353 23434343 39.54 41.53
#2:  32435353 32435353 39.64 42.43
数据
df1您可以使用来自tidyr的函数
gather
,也可以使用来自data.table的函数
melt
,就像akrun所说的那样


还有akrun数据。当我重现您的示例OP时,表的代码确实起作用。

我认为在输出的ID列中,第二个值与input@statuser根据你的例子,(从我展示的数据来看),它对我来说很好
df1 <- structure(list(WORKER_ID = 32435353L, WORK_ID = 23434343L, 
    HOME_ID = 32435353L, 
LAT_WORK = 39.54, LONG_WORK = 41.53, LAT_HOME = 39.64, 
LONG_HOME = 42.43), class = "data.frame", row.names = c(NA, 
 -1L))