根据向量更改列的类别

2024-02-27

我有 2 个数据框:

  • 主要的一个df
  • 另一个数据框tmp它描述了列类型df新格式应转换哪些列

这是一个可重现的示例:

df <- data.frame(var1 = c("a", "b", "c"),
                 var2 = c(1,2,3), 
                 var3 = c("d", "e", "f"))

tmp <- data.frame(Variable = c("var1", "var2", "var3"), 
                  Format = c("character", "numeric", "character"),
                  New_format = c("character", "integer", "factor"))

我想转换列的类型新格式不同于Format。我在使用 lapply 函数时遇到了很多困难,但未能成功。


Use readr::type_convert()

library(tidyverse)

types <- paste(map_chr(tmp$New_format, ~str_sub(., 1,1)), collapse = "")

new_df <- type_convert(df, types, guess_integer = T)

str(new_df)
'data.frame':   3 obs. of  3 variables:
 $ var1: chr  "a" "b" "c"
 $ var2: int  1 2 3
 $ var3: Factor w/ 3 levels "d","e","f": 1 2 3

此函数要求将类型规范作为cols()语句,或作为具有由单个字母指示的新列类型的字符串(例如,“c”代表字符,“f”代表因子,等等)。

所以要么重命名New_format标签为其单字母版本(“c”、“i”、“f”),或者您可以使用str_sub and paste with tmp得到第一个字母(其中type_convert想要类型参数)。

注意:一定要设置guess_integer = TRUE,否则将默认输入double即使你要求整数。

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

根据向量更改列的类别 的相关文章

随机推荐

  • 使用 Python 进行令人尴尬的并行数据库更新 (PostGIS/PostgreSQL)

    我需要更新空间数据库中的每条记录 其中我有一个覆盖多边形数据集的点数据集 对于每个点要素 我想分配一个键以将其与其所在的多边形要素相关联 因此 如果我的点 纽约市 位于美国多边形内 并且对于美国多边形 GID 1 我将为我的点纽约市分配 g
  • 仅显示天数时间刻度

    我正在尝试从scaleTime的x轴上删除月份和年份刻度 但不知道是否可能 我尝试使用 tickFormat 方法 但无法访问月份和年份值 我只能通过将比例更改为 LinearScale 并手动格式化值来获得预期结果 有可能在时间尺度上得到
  • IEnumerable 可能的多重枚举吗? [复制]

    这个问题在这里已经有答案了 这是为什么 我该如何解决它 这里没有什么需要修复的 Any 将迭代枚举 但在第一个元素之后停止 之后返回 true 多重枚举主要在两种情况下出现问题 性能 通常 如果您希望避免多次迭代 可以 因为速度较慢 这不适
  • 使用python连接mysql并上传csv

    我是 python 新手 我想使用 mysql connector 和 python 连接到 mysql 我想打开 csv 然后将其上传到 mysql 数据库 我使用 python 版本 3 6 0 我已经尝试过这个 import csv
  • 将 ASP.Net Core 2 (.NET Framework) Web Api 拆分为类库和托管项目是否可能/明智?

    我正在尝试使用 Visual Studio 2017 v15 4 5 将现有的 WCF Web API 针对 NET Framework 4 6 1 移植到 ASP Net Core 2 但在找出组织项目的良好 通用 受支持的方法时遇到困难
  • 父子数据的 xslt 递归模板

    我正在尝试将我的注意力集中在 xslt 上 stackoverflow 帮助中的一些问题 XSLT 模板和递归 https stackoverflow com questions 2835567 xslt templates and rec
  • 如何在 MongoDB 中按 $elemMatch 排序?

    在我的 MongoDB 数据库中 我有一系列产品 每个产品都包含数组中的发布信息 例如 name foo release region GB active Y date ISODate 2012 03 01T00 00 00Z region
  • 将 JSON 发布到 Web API 2 时出错:此资源不支持请求实体的媒体类型“text/plain”

    我有这门课 public class MyClass public MyClass Secret Don t tell me public string Name get set public int Age get set public
  • 生成具有最小距离的随机 x 和 y 坐标

    R中有没有办法生成它们之间距离最小的随机坐标 例如 我想避免什么 x lt c 0 3 9 4 1 8 y lt c 1 4 1 3 9 7 plot x y 这是随机几何中的一个经典问题 空间中完全随机的点 其中落在不相交区域中的点的数量
  • 如何解析字符串并返回嵌套数组?

    我想要一个Python函数 它接受一个字符串 并返回一个数组 其中数组中的每个项目要么是一个字符 要么是另一个此类数组 嵌套数组在输入字符串中以 开头并以 结尾进行标记 因此 该函数的行为如下 1 foo abc a b c 2 foo a
  • Android 中不安全的蓝牙连接

    一位教授向我提出挑战 要求我在 Android 上开发一个小型蓝牙演示应用程序 直到两周前他向我提出这个挑战之前 我对 Android 开发一无所知 一般来说 我对 Java 编程也很陌生 所以我的起点还很远 但不管怎么说 所以我完成了大部
  • mousedown 事件的 if else if 语句

    我的目标是为每个单击的项目显示不同的对话框 我目前有一个设置 我想我可以添加一个 if 语句 如果将 mousedown 放在 div a dialog a 上 否则如果将 mousedown 放在 div b dialog b 等上 我是
  • .NET 正则表达式检查长度和非字母数字字符

    我需要 Regexp 来验证字符串的最小长度为 6 并且它至少包含一个非字母数字字符 例如 eN S u h9YI gt 4j 9YI 4j eN S usdf dfh9YI gt 4j ghffg 9YI 4j 这个运作良好 6 d 但在
  • 使用并行工具箱创建具有有限数量工作人员的任务/作业池(线程池)

    我想使用并行计算工具箱来加速一组相互不依赖的函数调用 为了提高效率 我想使用计时器函数 回调函数在我的函数之一完成执行后继续执行更多函数 我事先不知道哪些函数会更快 所以我不能将我的函数集分成几个池并将它们设置为并行 换句话说 我想要一些并
  • 通过 WCF 服务传递枚举

    我需要在与我的 WCF 服务项目分开的项目中定义一个枚举 我正在创建一个包含枚举和其他数据的对象 当我通过 WCF 服务将对象传递给客户端时 我得到一个未找到的信息 Enum public enum Color Red 1 Blue Gre
  • Terraform 上出现“无效的旧提供商地址”错误

    我正在尝试使用 terraform v0 14 3 部署 bitbucket 管道以在谷歌云中创建资源 运行 terraform 命令后 管道失败并出现以下错误 Error Invalid legacy provider address T
  • 如何防止滑动触发点击?

    I use 触摸滑动 http labs rampinteractive co uk touchSwipe demos 创建可滑动的图像列表 我将滑动事件绑定到图像 同时我还绑定了一个单击事件来打开图像的大版本 我的问题是 如果我滑动 它也
  • 什么是换行转换?

    当您尝试将值从一种类型转换为另一种不兼容的类型时 您会在 C 中收到以下错误 CS0039 无法通过引用转换 装箱转换 拆箱转换 包装转换或 null 类型转换将类型 A 转换为 B 我了解如何潜在地解决此问题 但我的问题是关于转换本身的类
  • Rails 迁移使列为 null => true

    我最初创建了一个表 其中列为 t string email default gt null gt false 要求已更改 现在我需要允许电子邮件为空 如何编写迁移以使 null gt true change column null http
  • 根据向量更改列的类别

    我有 2 个数据框 主要的一个df 另一个数据框tmp它描述了列类型df和新格式应转换哪些列 这是一个可重现的示例 df lt data frame var1 c a b c var2 c 1 2 3 var3 c d e f tmp lt