R:将多个二元列转换为一个因子变量,其因子是二元列

2024-01-14

我收到了一个可怕的数据集,我正在努力清理它:272 个(字符)变量和 343 个观察值。它由许多二元变量组成,这些二元变量可以概括为具有多个因素的一个变量。因此,不要问“您是个体经营者还是受雇者?”并且给定选项 1“自雇”、2“受雇”以及可能 3“无/其他”,该集合有两个变量:v1.selfowned 和 v2.employee,其中选项 1“是”和 2“否”。

我现在需要将几个二进制变量合并为一个。由于它们是字符,我需要将它们转换为因子,我就是这么做的(参见示例)。

### datasetdataset
v1 <- as.character(c("yes", "yes", "no", "yes", "yes", "no", "yes","no", "no", NA ))
v2 <- as.character(c("no","no","no","no","no","yes","no","yes", "no", NA))
v3 <- as.character(c("no","no", "yes", "no","no","no","no","no", "yes", NA))

df <- data.frame(v1,v2,v3)
library(tidyverse)

## dataframe -> tibble
df.t <- as_tibble(df)

## convert into 1/0 factor
df.t %>%
  mutate_if(is.character, as.factor) %>% 
  mutate_at(vars(1:3), ~fct_recode(., "1" = "yes", 
                                          "0" = "no"))

我选择这条路线是因为我有很多二进制“包”,我需要能够通过 vars() 进行选择。转换所有必要的包后,我将它们保存在一个新的 data.frame 中,因为我不确定是否使用 tibbles。 我的目标是有一个变量v.与因子水平v1、v2和v3组合.

这个确切的问题已于 8 年前发布在这个线程中 https://stackoverflow.com/questions/21421967/r-converting-multiple-binary-columns-into-one-factor-variable-whose-factors-are。我尝试了他们提到的方法,但它们似乎不起作用。它们可能已经“过时”了?我最终要么得到比以前更多的观察结果(这很有趣),要么得到错误。 8 年里,R 开发过程中一定发生了一些事情,可能会让这个过程变得更容易。

感谢大家的帮助!


我猜测您想恢复变量的“one-hot 编码”。这是一种快速的方法。

apply(df ,1,\(x) names(which(x == "yes"))) |>
  purrr::map_chr(~ifelse(length(.x) == 0, NA_character_, .x))

#+  [1] "v1" "v1" "v3" "v1" "v1" "v2" "v1" "v2" "v3" NA  

tidyverse 的方法是:

df |>
  mutate(ID = row_number()) |>
  pivot_longer(cols = c(v1,v2,v3), names_to = "var") |>
  filter(value == "yes")

##>      ID var   value
##>   <int> <chr> <chr>
##> 1     1 v1    yes  
##> 2     2 v1    yes  
##> 3     3 v3    yes  
##> 4     4 v1    yes  
##> 5     5 v1    yes  
##> 6     6 v2    yes  
##> 7     7 v1    yes  
##> 8     8 v2    yes  
##> 9     9 v3    yes  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:将多个二元列转换为一个因子变量,其因子是二元列 的相关文章

  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 如何从 R 中的 txt 文件读取矩阵?

    我有一个带有矩阵的txt文件 Matrix txt 重要 数字之间没有空格 0100 1001 1100 我想在 R 中将其作为矩阵读取 我该怎么做 我尝试使用 as matrix read table Matrix txt sep 但失败
  • 使用 ggmap 截断密度多边形

    我在使用 R ggmap 绘制密度图时遇到问题 我的数据如下所示 gt head W date lat lon dist 1 2010 01 01 31 942 86 659 292 415 2 2010 01 10 32 970 84 1
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • applyStrategy 错误

    我是R新手 最近运行后遇到以下错误applyStrategy函数来自quantstrat包裹 Error in eval expr envir enclos object signal not found Error in colnames
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works

随机推荐

  • Maven 的综合站点/部署目标

    在 CI 服务器上运行 Maven 构建时 我生成站点来发布文档和报告 并将工件部署到快照存储库以供其他项目使用 为此 我设定了以下目标 mvn clean site deploy 这意味着单元测试已运行twice 一次用于站点生命周期 一
  • 将 JsonSerializerSettings 从 JsonSerializer 复制到新的 JsonSerializer

    有什么办法可以去掉设置JsonSerializer类并在新的中重新实现它们JsonSerializer 似乎没有任何方法可以做类似的事情 我发现最好的是通过反射调用的私有方法 ApplySerializerSettings 我正在尝试从Wr
  • Spring 表达式 (SpEL) - 舍入

    使用 SpEL 评估数学运算时是否有办法指定舍入精度 例如 ExpressionParser parser new SpelExpressionParser Expression exp parser parseExpression 2 3
  • Underscore.js - 获取唯一的属性值

    我最近才发现 underscore js 的强大功能 对方法仍然很陌生 我恳请建议 我如何从中得到 name Type 2 id 14 name Type 1 id 13 name Type 3 id 15 name Type 2 id 1
  • 有没有办法在 Javascript 中拥有/锁定 Enum 对象的唯一索引值? [复制]

    这个问题在这里已经有答案了 正在阅读 推荐方式 https stackoverflow com questions 287903 enums in javascript处理的枚举类型 https en wikipedia org wiki
  • Xcode 5.0.1 iOS 7.0.3 模拟器未启动

    我刚刚在 OSX Mavericks 上升级到 Xcode 5 0 1 并将 Xcode 升级到 5 0 1 当我尝试在 iOS 7 0 3 模拟器上启动应用程序时 模拟器无法启动 该应用程序将在 iOS 6 1 模拟器上启动 但 iOS
  • 嵌入式 C 中模运算符的替代方案? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 嵌入式 c 中是否有 运算符的替代方案 还有其他一些方法可以做到这一点 例如在 C 中使用 while 循环 但模运算符真的会降低微控
  • Symfony2:如何翻译表单类型中的自定义错误消息?

    我需要翻译我的表单类型中的错误消息 这是我的表单类型代码 class ReferFriendType extends AbstractType public function buildForm FormBuilder builder ar
  • 实体框架性能问题

    我在实体框架方面遇到了一个有趣的性能问题 我正在使用代码优先 这是我的实体的结构 一本书可以有很多评论 评论与一本书相关联 一篇评论可以有一个或多个评论 一条评论与一条评论相关联 public class Book public int B
  • 如何使用存储过程实现Gridview自定义分页?

    有人可以将我重定向到您自己的博客链接或任何其他链接 解释有关如何使用存储过程实现 gridview 自定义分页的完整教程吗 我在 google 中的搜索给了我 2006 年的旧文章 现在我正在使用 asp net 3 5 和 c aspx
  • Homestead Laravel 继续运行之前的版本

    我已按照以下步骤操作https laravel com docs 8 x homestead updating homestead https laravel com docs 8 x homestead updating homestea
  • 我的应用程序中的 Google 地图不可见

    当我启动我的应用程序时 出现以下错误 V GoogleSignatureVerifier 4962 com myapp application signature not valid Found V GoogleSignatureVerif
  • 创建 Maven 项目,无法解析原型,连接被拒绝

    我怀疑我有 Maven 代理问题 当我创建一个新项目时 1 文件 gt 新建 gt Maven项目 2 我选择原型 在 org apache maven archetypes 中 gt maven 原型 webapp 3 我得到这个错误 无
  • 从其他进程获取模块句柄

    有没有办法使用 C 从另一个进程获取我知道其名称的模块的句柄 GetModuleHandle and GetModuleHandleEx仅从同一进程获取句柄就很好 您可以使用读取进程内存 http msdn microsoft com en
  • 域名可以有两个连续的连字符吗

    我在 SO 上查找了几个问题 这似乎表明不允许使用两个连续的连字符 例如 my website com 但是当我在http www register com index rcmx http www register com index rc
  • Flask-sqlalchemy - PostgreSQL - 为表定义特定模式?

    我想使用flask sqlalchemy 为 模型 定义特定模式 当您在 sqlalchemy 本身中创建表对象时 它有一个用于传递模式名称的参数 我如何在flask sqlalchemy中做到这一点 当您定义模型类时 请使用 table
  • 最佳实践 - 在 EntityFramework 中混合表实体与视图实体?

    我有一个遗留数据库 我想与实体框架进行交互 该数据库经过高度规范化 用于存储有关航班的信息 为了更容易地处理某些数据 编写了许多 SQL 视图来扁平化数据并将某些多表连接转换为更多逻辑信息 快速查看后 我发现在 EF 中使用视图有两个问题
  • Spring Integration 通道统计指标

    不知怎的 我没有捕捉到 Spring Integration Metrics 内容 我想要的是关于每秒有多少消息通过消息通道 最小和最大吞吐量是多少的统计输出 如果我使用newTicketChannel getSendRate 然后我变成以
  • 如何使用 cmis 查询过滤文件夹子级?

    我想通过一个查询从 cmis 1 0 兼容存储库中过滤文件夹的子级 到目前为止 这似乎不可能 所以我决定执行两个查询来检索子项 即文件夹和文档 但是仍然想按自定义类型过滤子项 因此我有以下查询 SELECT cmis objectTypeI
  • R:将多个二元列转换为一个因子变量,其因子是二元列

    我收到了一个可怕的数据集 我正在努力清理它 272 个 字符 变量和 343 个观察值 它由许多二元变量组成 这些二元变量可以概括为具有多个因素的一个变量 因此 不要问 您是个体经营者还是受雇者 并且给定选项 1 自雇 2 受雇 以及可能