创建 4 个类别变量

问题描述

我使用了一项包含 20 个问题的调查,并将 20 个问题的平均值计算为“总计” 400 名参与者。 现在我需要将总计分为 4 组: Total = 2 是基本的,Total = 3 是 Full

我能够创建三个但不是四个变量,如下所示:

level <- ifelse (df$Total <2,"Limited",ifelse((df$Total>= 2) & (df$Total<3),"Basic","Good"))

然后我想看看每个类别在数字或图表上的百分比是多少。

解决方法

我可能误解了一些东西,但您似乎有重叠的类别 - Total >= 2 是基本的,但 Total ifelse 语句并认为它们是按顺序计算的。因此,如果条件评估为链中的 TRUE “早期”,它将返回该点 TRUE 响应的任何输出。否则,它将移动到下一个 ifelse 进行评估。请注意,我在此处使用了 1、2 和 3 作为类别的“中断”,因此逻辑评估为:“如果小于 1,则为有限。如果小于 2,则为基本。如果是小于 3 还好,否则就满了。"

set.seed(123)
df <- data.frame(total = runif(n = 15,min = 0,max = 4))
df


df$level = ifelse(df$total < 1,"Limited",ifelse(df$total < 2,"Basic",ifelse(df$total < 3,"Good","Full")))
> df
       total   level
1  0.5691772 Limited
2  2.1971386    Good
3  3.8163650    Full
4  2.3419334    Good
5  1.6180411   Basic
6  2.5915739    Good
7  1.2792825   Basic
8  1.2308800   Basic
9  0.8790705 Limited
10 1.4779555   Basic
11 3.9368768    Full
12 0.6168092 Limited
13 0.3641760 Limited
14 0.5676276 Limited
15 2.7600284    Good

只有四个类别,ifelse 块可能没问题 - 如果我使用更多边界,我可能会使用不同的方法 Edit: 像 thelatemail's - 它更干净。