R 脚本,如何 group_by 和最大因子值?

R script, how to group_by and max on factor values?

出于报告目的,我有一个定义如下的数据框:

Data:
V df_ischemia 12 obs. of 2 variables
  record_id : 'labelled' chr "1001" "1001" "1001" "1001" "1002" ...
  ..- attr(*, "label")= chr "Patient number"
  ischemic: Factor w/ 2 levels "Unchecked","Checked": NA NA 1 1 NA 2 NA 1 NA 2 ...
  ..- attr(, "redcapLabels")= chr [1:2] "Unchecked" "Checked"
  ..- attr(, "redcapLevels")= int [1:2] 0 1
  ..- attr(, "label")= chr "Complication(s): Ischemia"

真实的数据框有几百行,但对于这个例子,假设它只有 12 行,如下所示:

   | record_id  | ischemic
 1 | 1001       | NA
 2 | 1001       | NA
 3 | 1001       | Unchecked
 4 | 1001       | Unchecked
 5 | 1002       | NA
 6 | 1002       | Checked
 7 | 1003       | NA
 8 | 1003       | Unchecked
 9 | 1004       | NA
10 | 1004       | Checked
11 | 1004       | Checked
12 | 1004       | Checked

目标是为具有 'Checked' 值的患者分组,因此预期输出应如下所示:

  | record_id  | ischemic
1 | 1002       | Checked
2 | 1004       | Checked

我想只需使用 group_bymax

df_ischemia <- group_by(record_id) %>% max(df_ischemia$ischemic)
# Error object 'record_id' not found

df_ischemia <- group_by(df_ischemia$record_id) %>% max(ischemic)
# no applicable method for 'group_by_' applied to an object of class "c('labelled', 'character')"

df_ischemia <- group_by(record_id) %>% summarise(df_ischemia$ischemic=max(df_ischemia$ischemic))
# Error: unexpected '=' ..

但这不起作用,但是该因子确实具有 int 值,因此最大值应该是可能的(?)。我在某处读到应该订购该因素。它看起来像是有序的,但不知道如何检查是否是这种情况,或者如何设置现有因子的顺序。

第一种情况我们需要summarise

library(dplyr)
df_comp_lrcsp %>% 
   group_by(record_id) %>% 
    summarise(Max =  comp_lrcsp___1[which.max(as.integer(comp_lrcsp___1))]) )

<- 位置错误,即 group_by 应用于列 'record_id' 而未指定数据 'df_comp_lrcsp',分组后,max 在整列 'comp_lrscp__1' 上完成。此外,由于链的原因,提取可能也不适用于在其上应用的函数。

在第二个代码中,同样的问题没有数据和没有 summarise 应用的 max。最后,我们遇到了 'data' not found 问题以及完整列的提取。 $ 提取打破分组的完整列