繁体   English   中英

一次重塑4个变量R

[英]Reshape 4 variables at once R

我有一个数据集,该数据集根据纬度和经度将WORKER_ID的HOME_ID和WORK_ID分开,但都在同一行中。 我想重新调整形状,使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

我尝试重塑时会收到一堆错误消息,并且想知道是否有人会知道正确的语法。 先感谢您。

我们可以用meltdata.table

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 <- 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))

您可以使用从tidyr gather的功能或从data.table melt的功能,就像akrun所说的那样。

当我重现示例OP时, akrun data.table的代码也可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM