r - 使用因子函数分配标签
问题描述
我是 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
关于如何解决这个问题的任何想法?
解决方案
请花一点时间检查一下:如何发布一个很棒的 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")
将是要走的路。
推荐阅读
- excel - 遍历隐藏那些不包含数组中列出的值的行
- node.js - 扩展使用嵌套回调样式的类并使用异步等待编写新类?
- html - 在隐藏或打开时重绘引导模式
- django - 将元素添加到表时出现 django 管理错误(请更正以下错误)
- react-native - 如何分隔视图组件 React Native 的子项
- javascript - 反应-通过父级传递子状态时未定义状态
- json - PySpark 将 JSON 字符串分解为多列
- javascript - 如何使用 React 删除列表项(功能组件)
- html - 在引导程序中收缩和扩展 iframe 内容的网格
- java - 如何使用使用 Firestore 文档字段的 HashMap 键值并填充 recyclerview?