创建一个R级别的新变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个R级别的新变量相关的知识,希望对你有一定的参考价值。

我是R的新手,目前正努力学习这门语言。我想要做的是创建一个具有三个级别的新变量(如果这是有道理的)。我试图在同一个新变量中显示增长<= 0%,<1%和> = 1%(如果可能的话,请告诉我)。

到目前为止,我试过这个:

pincome$perctchng<- ifelse(pincome$perctchng<=0,ifelse(pincome$perctchng<1,
              ifelse(pincome$perctchng>=1,"level 1","level 2","level 3")))

这是我尝试过的代码。我知道这是错的,但任何建议都是正确的方向受到欢迎。

谢谢!

答案

嵌套的ifelse陈述几乎从来都不是正确的答案。他们难以阅读和脆弱。您的目标是将连续值(perctchng中的数值)转换为分类值(“级别1”等)。 R的cut功能非常适用于此:

pincome <- data.frame(perctchng = c(-2, -1, 0, 1, 2, 5))

  perctchng
1        -2
2        -1
3         0
4         1
5         2
6         5

pincome$level <- cut(pincome$perctchng, c(-Inf, 0, 1, Inf), c('level 1', 'level 2', 'level 3'))

  perctchng   level
1        -2 level 1
2        -1 level 1
3         0 level 1
4         1 level 2
5         2 level 3
6         5 level 3
另一答案

您的解决方案几乎是好的,您的语法不正确:

library(dplyr)

pincome <- data.frame(perctchng = c(-2, -1, 0, 1, 2, 5))

pincome %>%
  mutate(perctchng_level = ifelse(perctchng <= 0, "level 1",
                            ifelse(perctchng < 1, "level 2",
                                   ifelse(perctchng >= 1, "level 3", NA))))

结果:

  perctchng perctchng_level
1        -2         level 1
2        -1         level 1
3         0         level 1
4         1         level 3
5         2         level 3
6         5         level 3
另一答案

一个整合的解决方案:

pincome $ perct chng < - ifelse(pincome $ perc chng <= 0,ifelse(pincome $ perct chng <1,ifelse(pincome $ perctchng> = 1,“level 1”,“level 2”,“level 3”))) )

library(tidyverse)
pincome <- pincome %>%
           mutate(perctchng = case_when(perctchng <= 0 ~ "level 1",
                                        perctchng < 1 ~ "level 2",
                                        perctchng >= 1 ~ "level 3",
                                        TRUE ~ NA_character_)

以上是关于创建一个R级别的新变量的主要内容,如果未能解决你的问题,请参考以下文章

创建片段的新实例时菜单未膨胀

R 代码:model.matrix.default(mt, mf, contrasts) 中的错误:变量 1 没有级别

在片段中接收 NFC 的应用程序创建托管活动的新实例

如何将 r ggplot 图存储为 html 代码片段

如何创建片段以重复变量编号中的代码行

如何创建具有较低完整性级别 (IL) 的新流程?