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_by
和 max
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 问题以及完整列的提取。 $
提取打破分组的完整列
出于报告目的,我有一个定义如下的数据框:
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_by
和 max
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 问题以及完整列的提取。 $
提取打破分组的完整列