一次重塑 4 个变量 R
Reshape 4 variables at once R
我有一个数据集,它根据纬度和经度将 WORKER_ID 的 HOME_ID 和 WORK_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
我在尝试重塑时收到一堆错误消息,想知道是否有人知道正确的语法。提前谢谢你。
我们可以使用 melt
来自 data.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 所说的那样。
此外,akrun data.table 的代码在我重现您的示例 OP 时确实有效。
我有一个数据集,它根据纬度和经度将 WORKER_ID 的 HOME_ID 和 WORK_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
我在尝试重塑时收到一堆错误消息,想知道是否有人知道正确的语法。提前谢谢你。
我们可以使用 melt
来自 data.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 所说的那样。
此外,akrun data.table 的代码在我重现您的示例 OP 时确实有效。