R:如何将多个有序因素中的数据汇总为一个变量

R:如何将多个有序因素中的数据汇总为一个变量,r,data-manipulation,categorical-data,ordinal,R,Data Manipulation,Categorical Data,Ordinal,我有代表不同情况下患者哮喘症状严重程度的数据。严重性变量为有序因子,所有变量水平相同(轻度

我有代表不同情况下患者哮喘症状严重程度的数据。严重性变量为有序因子,所有变量水平相同(轻度<中度<重度)。以下是一个简化的示例:

# Create example data frame
df <- data.frame(
  ID = c(1:5),
  Daytime = c("Mild", "Severe", "Mild", "Moderate", "Moderate"), # severity of daytime symptoms
  Sleep = c("Moderate", NA, "Mild", "Mild", "Moderate"), # severity of nighttime symptoms
  Activity = c("Mild", "Moderate", "Mild", "Moderate", "Severe") # severity of symptoms during activity
  )

# Specify order of factor levels
df$Daytime <- ordered(
  df$Daytime,
  levels = c("Mild",
             "Moderate",
             "Severe")
  )
df$Sleep <- ordered(
  df$Sleep,
  levels = c("Mild",
             "Moderate",
             "Severe")
  )
df$Activity <- ordered(
  df$Activity,
  levels = c("Mild",
             "Moderate",
             "Severe")
)

df

是否有应用功能可以做到这一点?

一种快速的方法是:

df$Overall <- apply(df[,2:4], 1, max, na.rm=T)

df$total一种快速的方法是:

df$Overall <- apply(df[,2:4], 1, max, na.rm=T)

df$总的来说,这是一个很好的例子,说明了如何提问,清晰且易于再现。这是一个很好的例子,说明了如何提问,清晰且易于再现
> df$Overall <- ave(c(df$Daytime, df$Sleep, df$Activity),
+                 df$ID,
+                 FUN = function(i) max (i, na.rm=T)
+                 )
Error in `$<-.data.frame`(`*tmp*`, "Worst", value = c(2L, 3L, 1L, 2L,  : 
  replacement has 15 rows, data has 5
df$Overall <- apply(df[,2:4], 1, max, na.rm=T)