[英]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.