【问题标题】:Separating Multiple Observations R分离多个观察 R
【发布时间】:2018-11-16 01:11:38
【问题描述】:

我在数据框中有两列,Worker_ID 和 Location_ID。每行包含特定工作人员所在的位置。这些列可能有多个相同的 Worker_ID,基于不同的 Location_ID 或相同。此数据来自多个月,因此可能有多个相同的 Worker 和 Location ID 行。

一个例子如下:

Worker_ID      Location_ID
124893842      43432585855
148934855      38495485433
243243535      53535958383

我想显示这些数据,以便我可以看到每个 Worker_ID 及其旁边列中的所有相应位置,以便以后可视化这些数据。我试过重塑,但我似乎无法让它正常工作。有人知道我该怎么做吗?

【问题讨论】:

  • 添加所需输出的示例将帮助您更快地获得答案。

标签: r multiple-columns reshape


【解决方案1】:

假设每个 worker_id 的唯一 location_id 值数量有限,您可以执行以下操作:

library(dplyr)
library(tidyr)

df <- data_frame(
  worker_id = c(1, 1, 2, 2, 3, 3),
  location_id = c(1, 2, 3, 4, 1, 4)
  )
df %>%
  group_by(worker_id) %>%
  mutate(location_number = row_number()) %>%
  spread(location_number, location_id, sep = '_')

# A tibble: 3 x 3
# Groups:   worker_id [3]
  worker_id location_number_1 location_number_2
*     <dbl>             <dbl>             <dbl>
1         1                 1                 2
2         2                 3                 4
3         3                 1                 4

我使用了一些虚构的数据,因为您的数据似乎不能代表您的问题和所需的输出。此解决方案将起作用,但会生成与单个工作人员所在的唯一位置的最大数量一样多的列。

【讨论】:

    【解决方案2】:

    此解决方案创建一个向量列表,其中包含每个唯一 Worker_ID 的位置。

    l <- lapply(unique(d$Worker_ID), function(x) d[d$Worker_ID==x, 'Location_ID'])
    names(l) <- unique(d$Worker_ID)
    print(l)
    
    # $`124893842`
    # [1] 43432585855
    # 
    # $`148934855`
    # [1] 38495485433 53535958383 53535958384 53535958385
    # 
    # $`243243535`
    # [1] 53535958383
    

    (我添加了一些条目来扩展数据集并说明这一点)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多