我使用了一项包含20个问题的调查,并计算了400名参与者的20个问题的平均值为“总计”。现在我需要将总分类为4组:总量<2是有限的,总>= 2是基本的,总<3是好的,总>= 3是满的。
我能够创建三个但不是四个变量,如下所示:
level <- ifelse (df$Total <2, "Limited", ifelse((df$Total>= 2) & (df$Total<3), "Basic","Good"))然后我想看看在数字或图表上每个类别的百分比是多少。
发布于 2021-07-06 01:50:34
我可能误解了什么,但你似乎有重叠的类别-总>= 2是基本的,但总<3是好的。您可能需要确认分组的界限。一旦对此进行了排序,您实际上已经非常接近于一个有效的解决方案--您可以嵌套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块可能是可以的--如果我使用更多的界限,我可能会使用另一种方法--编辑:就像这封电子邮件一样--它要干净得多。
https://stackoverflow.com/questions/68263489
复制相似问题