简体   繁体   English

使用因子 function 分配标签

[英]Using the factor function to assign labels

I'm new to R.我是 R 的新手。 I was hoping for some guidance on my hw question.我希望对我的硬件问题有一些指导。 I'm trying to assign labels up and down to a variable.我正在尝试将标签上下分配给变量。 The code is running but I keep getting NA as values.代码正在运行,但我不断将 NA 作为值。 Here is my code:这是我的代码:

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

output: output:

  [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

Any idea on how to fix this?关于如何解决这个问题的任何想法?

Please take a minute to check this: How to make a great R reproducible example post out.请花点时间检查一下: 如何制作出色的 R 可重现示例发布。 It will help you ask more questions regarding R .它将帮助您询问有关R的更多问题。

what you'll want, is the following:您需要的是以下内容:

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

In this example, old is just some vector, much like your data$NewVar variable.在这个例子中, old只是一些向量,很像你的data$NewVar变量。 What you are doing wrong in your code is that you are calling factor() twice.您在代码中做错的是您两次调用factor() Moreover, you want to set the labels, not the levels.此外,您要设置标签,而不是级别。 Moreover, you might also want to include the levels parameter, to specify which of the 1, 0s is corresponding to which label.此外,您可能还希望包含levels参数,以指定 1、0 中的哪一个对应于哪个 label。 To do so, just add levels=c("0","1") or levels=c("1", "0") to your function call, depending on whether "0" stands for up or down.为此,只需将levels=c("0","1")levels=c("1", "0")添加到您的 function 调用中,具体取决于“0”代表向上还是向下。 It probably stands for down, so levels=c("1", "0") would be the way to go.它可能代表向下,因此levels=c("1", "0")将是 go 的方式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM