首页 > 解决方案 > 使用因子函数分配标签

问题描述

我是 R 的新手。我希望对我的硬件问题有一些指导。我正在尝试将标签上下分配给变量。代码正在运行,但我不断将 NA 作为值。这是我的代码:

NewVar <- if_else(data1$NewVar>median(data1$NewVar, na.rm = TRUE),"1","0")
factor(NewVar)
factor(NewVar, levels=c("up","down"))

输出:

  [1] 0    0    0    1    0    1    1    0    1    0    1    1    0    0    0    0    1    1    0    0    0    0    0    1    0    1    0    0    1   
 [30] 0    0    1    1    1    1    0    1    1    0    1    1    0    0    1    0    0    0    0    0    1    1    1    1    0    0    0    0    1   
 [59] 1    1    0    1    1    0    1    0    0    1    1    0    1    0    0    0    1    1    0    0    0    0    1    0    1    0    1    1    1   
 [88] 0    0    0    0    0    1    1    1    0    0    1    0    0    1    1    1    1    1    0    1    1    0    1    0    1    1    1    1    0   
[117] 0    1    0    1    1    1    0    0    1    0    1    0    1    1    0    1    1    1    1    1    1    NA 0    0    0   

Levels: 0 1

  [1] NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
 [30] NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA <NA> <NA> <NA> <NA> <NA> <NA> <NA>
 [59] NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA <NA> <NA> <NA> <NA> <NA> <NA> <NA>
 [88] NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[117] NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
Levels: high low

关于如何解决这个问题的任何想法?

标签: rr-markdownmarkdown

解决方案


请花一点时间检查一下:如何发布一个很棒的 R 可重现示例。它将帮助您提出更多关于R.

您需要的是以下内容:

library(dplyr)
set.seed(4211)
old <- c(rnorm(100), NA)

NewVar <- if_else(old>median(old, na.rm = TRUE),"1","0")
factor(NewVar, labels=c("up","down"))
  [1] up   up   down down down up   down down down up   up   down down up   down up  
 [17] up   up   up   up   down down down down down up   up   down up   down up   down
 [33] up   down down down up   up   up   down up   up   up   down up   down up   down
 [49] down up   up   up   down down down down down up   down up   down down down up  
 [65] down up   up   up   down up   down down down down down down up   up   down up  
 [81] up   up   up   down up   up   up   up   up   up   down down up   down up   up  
 [97] up   down down down <NA>
Levels: up down

在这个例子中,old只是一些向量,很像你的data$NewVar变量。您在代码中做错的是您调用factor()了两次。此外,您要设置标签,而不是级别。此外,您可能还希望包含levels参数,以指定 1、0 中的哪个对应于哪个标签。为此,只需将levels=c("0","1")或添加levels=c("1", "0")到您的函数调用中,具体取决于“0”代表向上还是向下。它可能代表向下,因此levels=c("1", "0")将是要走的路。


推荐阅读