转换数据框列类型的函数

2023-11-26

R 经常以“错误”格式理解数据框列,或者您只需将列类从因子更改为字符即可对其进行修改。我之前一直通过以下方式更改列类:

set.seed(1)

df <- data.frame(x = 1:10,
y = rep(1:2, 5),
k = rnorm(10, 5,2),
z = rep(c(2010, 2012, 2011, 2010, 1999), 2),
j = c(rep(c("a", "b", "c"), 3), "d"))

x <- c("y", "z")

for(i in 1:length(x)){
df[,x[i]] <- factor(df[,x[i]])}

回到数字:

x <- 1:5

for(i in 1:length(x)){
df[,x[i]] <- as.numeric(as.character(df[,x[i]]))} # Character cannot become numeric

我突然想到也许有更好的方法来做到这一点。我发现这个问题,这几乎正是我所需要的:

convert.magic <- function(obj,types){
out <- lapply(1:length(obj),FUN = function(i){FUN1 <- 
switch(types[i],
character = as.character,
numeric = as.numeric,
factor = as.factor); FUN1(obj[,i])})
names(out) <- colnames(obj)
as.data.frame(out)
}

但是,对于此函数,必须为每一列指定向量类型:

convert.magic(df, rep("factor",5))

convert.magic(df, c("character", "factor"))
# Error in FUN(1:5[[1L]], ...) : could not find function "FUN1"

有人可以帮助我重建这个函数,以便它可以使用列名和数字吗?我担心这对我来说太先进了......

x <- c("y", "z")
convert.magic(df, "character", x)

df <- data.frame(x = 1:10,
                 y = rep(1:2, 5),
                 k = rnorm(10, 5,2),
                 z = rep(c(2010, 2012, 2011, 2010, 1999), 2),
                 j = c(rep(c("a", "b", "c"), 3), "d"))

convert.magic <- function(obj, type){
  FUN1 <- switch(type,
                 character = as.character,
                 numeric = as.numeric,
                 factor = as.factor)
  out <- lapply(obj, FUN1)
  as.data.frame(out)
}

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

转换数据框列类型的函数 的相关文章

随机推荐

  • UIImage 动画图像色调颜色?

    有没有办法给动画中的图像着色 我知道我可以像这样对单个图像进行着色 var imageOne UIImage UIImage named pullto 1 png imageOne imageOne imageWithRenderingMo
  • Xcode 6.3 与 Swift 1.0 可能吗?

    是否可以使用 Xcode 6 3 但保留 Swift 1 0 使用 iOS 8 2 SDK 没有帮助 我找不到 Swift 版本的任何开关 编辑 我在 Swift 1 0 中有一个扩展构建 我不想碰它 但更新我的主项目 如果您遇到语法问题
  • Image.fromarray 只产生黑色图像

    我正在尝试使用将 numpy 矩阵保存为灰度图像Image fromarray 它似乎适用于随机矩阵 但不适用于特定矩阵 应该出现一个圆圈 谁能解释我做错了什么 from PIL import Image import numpy as n
  • C 中 long double 的转换说明符

    The 长双数据类型在 C 中可以有这些转换说明符 Le LE Lf Lg LG 参考 我写了一个小程序来测试 include
  • MongoDB - 子级和父级结构

    最近刚刚深入研究了 MongoDB 的 NoSQL 世界 我仍然在努力理解在没有第三次标准化数据然后加入数据的情况下最好的架构方法 目前我正在设计的项目是一个简单的文章集合 类似于维基 一篇文章将有标题和文本 以及 可能 一篇父文章和一篇或
  • Android onCreate 或 onStartCommand 用于启动服务

    通常当我创建 Android 服务时我会实现onCreate方法 但在我的上一个项目中这不起作用 我尝试实施onStartCommand 这似乎有效 问题是 当我必须实现一个服务时需要哪种方法 我必须实施哪些方法 onCreate onSt
  • Apple 开发者帐户团队未出现在 VS Mac 上

    当我在 Visual Studio Mac Community 2017 上登录我的 Apple ID 帐户时 团队没有显示 我必须有付费的苹果开发者帐户才能使用它吗 没有显示任何团队 并且 查看详细信息 按钮没有执行任何操作 另外 帐户左
  • 如何设置 Gtk.ComboBox 的值?

    我能弄清楚的只是与 ComboBox GetEnumerator 或类似的东西有关 我想做这样的事情 System Collections IEnumerator e this task difficulty combobox GetEnu
  • 如何在不链接源代码的情况下调试 System.StackOverflowException?

    最近 我经常遇到以下类型的错误 System StackOverflowException 类型的未处理异常 发生在未知模块中 这种情况发生在一个具有相当大的代码库 C XNA 的游戏 我开发的 中 但通常该错误仅在游戏进行几分钟后才会发生
  • 标准化 pandas 中的数据

    假设我有一个 pandas 数据框df 我想计算数据框的列平均值 这很容易 df apply average 然后按列范围 max col min col 这又很容易 df apply max df apply min 现在 对于每个元素
  • 将参数传递给打包的电子应用程序

    我们正在使用电子包装机捆绑并分发我们的 Web 应用程序的前端 我们需要能够通过host and port服务器到电子前端进行连接 当我们通过以下方式启动时electron main js host blah port 8080有用 打包后
  • 可以用python编译c代码吗?

    我想构建一个 python 程序 将 c 文件的路径作为输入 然后对其进行编译 如果编译成功 程序将在屏幕上输出OK 否则输出BAD 我一直在尝试用谷歌搜索 但找不到任何东西 我也一直在尝试使用编译程序的参数在 python 中运行 cmd
  • 用于泽西岛使用的(哈希)映射的序列化器?

    我正在尝试将以下有效负载发布到我的基于 Jersey 的 Web 服务 firstname Jimmy lastname Johns addresses street 19 Mayberry Drive city Mayberry stat
  • Fortran OpenMP 程序显示 CPU_TIME() 没有加速

    使用并行性应该可以最大限度地减少程序的时间 但这并没有发生在我身上 当我使用 OpenMP 并行编程代码时 运行时间会增加 即并行时间 gt 串行时间 My code PROGRAM MAIN use omp lib implicit no
  • iPhone:如何将视图另存为图像??? (例如保存你画的东西)

    我找到了一些示例教你如何在 iPhone 上画画 但它没有说如何将视图保存为图像 有人知道吗 或者任何样本都会有帮助 实际上 我正在尝试将用户的签名保存为图像并将其上传到服务器 Thanks Webber UIView view your
  • 使用来自向量的列名称创建空 tibble/数据框

    我想创建一个空数据框 其中列名称来自字符向量 例如 如果这是我的向量 vec lt letters 1 3 我想创建一个空数据框 如下所示 df lt tibble a character b character c character 但
  • 编译 Java 类时禁用编译时依赖性检查

    考虑以下两个 Java 类 a class Test void foo Object foobar b class Test void foo pkg not in classpath FooBar foobar 此外 假设pkg not
  • 为未导出的打字稿参数创建类型

    我们使用的模块不导出其所有参数的类型 这意味着参数经过类型检查 但我们无法在方法调用之前定义所需类型的变量 Example library interface Internal foo number I want to have a nam
  • 在 Python 2 中,viewvalues()/viewitems() 相对于 itervalues()/iteritems() 的性能权衡是什么?

    显然 使用values items and keys在 Python 2 X 中 几乎在所有情况下这都是不好的做法 因为您将分配一个实际上并不需要的额外列表 因此 一段时间以来 推荐的最佳实践是使用iteritems itervalues
  • 转换数据框列类型的函数

    R 经常以 错误 格式理解数据框列 或者您只需将列类从因子更改为字符即可对其进行修改 我之前一直通过以下方式更改列类 set seed 1 df lt data frame x 1 10 y rep 1 2 5 k rnorm 10 5 2