【问题标题】:dplyr select/distinct keeps brining in a column I don't choosedplyr select/distinct 一直在我不选择的列中
【发布时间】:2017-11-14 19:51:52
【问题描述】:

我有一张表,里面有很多列。例如:

MRN     | Svc_Line...
--------|----------
123456  | Medical
123456  | Medical
987654  | Surgical
...

我发出以下命令,这些命令都带回了一个额外的列:

dplyr::select(
distinct(
.data = tblPerf
, MRN
    )
)

带回 MRN 和 Svc_Line

dplyr::select(
.data = tblPerf
, MRN
)

带回 MRN 和 Svc_Line

dply::distinct(
.data = tblPerf
, MRN
)

带回 MRN 和 Svc_Line

无论我尝试带回什么列,Svc_Line 总是也带回。这是一个factor,不知道为什么会这样。我已经关闭并重新启动了我的 R-Studio 会话

tblPerf 是从另一个表rad_data 拼凑而成的。表rad_data 有许多变量是使用mutate() 基于其他列的分组创建的。然后我做了以下事情:

tblPerf <- rad_data %>%
mutate(ord_per_pt_elos = 
       round((enc_order_count/Performance), 4)) %>%
mutate(ord_pty_svcline_ord_elos = 
       round((svcline_ord_per_pt/ord_pty_svc_elos), 4)) %>%
mutate(avg_ord_per_pt_elos = round(avg_ordperenc_ord_pty/ord_pty_elos, 4))

然后我试图从中选择/区分。从那以后,我也完成了tblPerf &lt;- tblPerf,希望摆脱分组错误。我现在收到以下错误:

> tblPerf <- tblPerf
> dplyr::select(
+   .data = tblPerf
+   , MRN
+ )
Adding missing grouping variables: `Ord_Pty_Number`, `LIHN_Svc_Line`
# A tibble: 1,715 x 3
# Groups:   Ord_Pty_Number, LIHN_Svc_Line [217]
   Ord_Pty_Number LIHN_Svc_Line    MRN
            <chr>        <fctr>  <chr>
 1          12345       Medical 123456

我昨天没有这个问题

【问题讨论】:

  • tablPerf 是否分组?
  • tblPerf 确实包含基于分组组合在一起的变量。我将更新问题以显示获取 tblPerf 的步骤
  • 如果它被分组,你需要明确地使用ungroup() 来防止这些变量被标记。
  • 这行得通,即使它没有改变表格中的任何内容,谢谢@joran
  • 分组信息实际上是作为属性“附加”到数据框(tibble)的。因此,如果您在分组的 df 上运行 attributes(),您将看到该信息以及 dplyr 和 tibble 附加的其他信息。

标签: r dplyr


【解决方案1】:

您需要取消分组数据框。

> tblPerf <- tblPerf %>% ungroup()
> dplyr::select(
+   .data = tblPerf
+   , MRN
+ )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2014-10-23
    • 1970-01-01
    • 2017-11-28
    相关资源
    最近更新 更多