0

我有以 -# 结尾的行值(# 范围从 4 到 8)。我有一个对应的列,该列具有与每个 -# 行关联的值。

我想使用 dplyr 来转置我的 df,以便将 -3 行变成列字段,并且在给定它的“标题”(-4、-5 等)的情况下,将来自其他变量(列)的相应值的数量添加到每一列。 )

我使用 dplyr 包将我的行移动到列标题,但似乎无法获得正确的输出。

head(MFP)
 PART_RMV_DT RMV_MFR_PART_NO RMV_LRU_TSO_TM RMV_LRU_TSR_TM LRU
1   2017-06-25        828300-5                               MFP
9   2016-01-11        828300-5          17500          17500 MFP
17  2015-12-27        828300-5          16698          12193 MFP
19  2018-11-30        828300-5          40738          17494 MFP
21  2016-09-19        828300-5          25107          13528 MFP
23  2016-11-17        828300-5          35281          35281 MFP

t <- as.data.frame.matrix(xtabs(RMV_LRU_TSO_TM~RMV_MFR_PART_NO, MFP_df))

Error in Summary.factor(c(4268L, 472L, 3342L, 17L, 1L, 1L, 2834L, 5421L,  : 
  ‘sum’ not meaningful for factors

如果我的列中有 4 组基于 -# 的不同值,我想将这些值移动到列中,并从每个 -# 列下方的其他列中提取相关值。

4

1 回答 1

0

虽然通过提供的有限信息很难说出您实际想要什么(您所追求的示例以及准备运行的 tibble/tribble 将非常有帮助),但下面的代码可以让您了解它听起来你在追求。

然而,它在 R 中本质上是一个死胡同,因为小标题的设置使得列名必须是唯一的(为什么我必须嵌套 RMV_LRU_TSO_TM 值)并且迭代列比迭代行要困难得多,所以你需要收集,unnest before,比如说,group_by'ing 和 summarizing。如果您在将数据转换为您提到的格式后告诉我们您的目标是什么,那可能会为您提供更好的答案。

    tribble(
  ~PART_RMV_DT, ~RMV_MFR_PART_NO, ~RMV_LRU_TSO_TM, ~RMV_LRU_TSR_TM, ~LRU,
  # 2017-06-25,        828300-5,                               MFP
  "2016-01-11",        "828300-5",          17500,          17500, "MFP",
  "2015-12-27",        "828300-5",          16698,          12193, "MFP",
  "2018-11-30",        "828300-5",          40738,          17494, "MFP",
  "2016-09-19",        "828300-5",          25107,          13528, "MFP",
  "2016-11-17",        "828300-5",          35281,          35281, "MFP",
  "2019-09-11",        "828300-4",          77777,          88888, "MFP",
) %>% 
  select(RMV_MFR_PART_NO, RMV_LRU_TSO_TM) %>% 
  nest(-RMV_MFR_PART_NO) %>% 
  spread(key = RMV_MFR_PART_NO, value = data) %>%
  rename_at(vars(contains("-")), ~ str_remove(.,"828300"))

输出:

    # A tibble: 1 x 2
  `-4`              `-5`             
  <list>           <list>          
1 <tibble [1 × 1]> <tibble [5 × 1]>
于 2019-09-12T01:47:26.697 回答