繁体   English   中英

分离多个观测值R

[英]Separating Multiple Observations R

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

下面是一个示例:

Worker_ID      Location_ID
124893842      43432585855
148934855      38495485433
243243535      53535958383

我想显示此数据,以便可以看到每个Worker_ID及其旁边各列中的所有对应位置,以便以后可以可视化此数据。 我尝试重塑,但似乎无法正常工作。 会有人对我该如何做有任何想法吗?

假设每个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

我使用了一些组合数据,因为您的数据似乎无法代表您的问题和所需的输出。 该解决方案将起作用,但是产生的列数与单个工作人员所处的唯一位置的最大数目一样多。

此解决方案创建了一个向量列表,其中包含每个唯一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

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

暂无
暂无

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

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