将因子转换为整数[重复]

Posted

技术标签:

【中文标题】将因子转换为整数[重复]【英文标题】:Convert factor to integer [duplicate] 【发布时间】:2011-06-15 11:05:57 【问题描述】:

我正在使用 reshape 包处理数据框。使用 melt 函数时,它会分解我的值列,这是一个问题,因为这些值的子集是我希望能够对其执行操作的整数。

有谁知道将一个因子强制转换为整数的方法?使用as.character() 会将其转换为正确的字符,但我无法立即对其执行操作,as.integer()as.numeric() 会将其转换为系统存储该因子的数字,这没有帮助。

谢谢!

杰夫

【问题讨论】:

这类似于***.com/questions/3418128/… 此 Q 与重复的 Q 不同。许多人从最佳答案中获得了 NA(参见 cmets)。在该帖子中有效的答案在中间(***.com/a/42399425),但被声明为不属于该帖子。我建议将其添加到此帖子中。这么简单的问题浪费了这么多时间。 @luchonacho 如果 NA 是此问题的关键问题,则应在问题中提及。我没有看到“很多人”,我看到了一些关于未提及的非数字值或完全不同的用例(例如您链接到的答案)的cmets。如果您想要一个专注于处理 NA 和/或非数字字符串的新问题,您应该发布一个 【参考方案1】:

直接从factor的帮助页面引用:

要将因子 f 转换为其原始数值,建议使用as.numeric(levels(f))[f],它比as.numeric(as.character(f)) 效率略高。

【讨论】:

#bazinga。阅读是基础!【参考方案2】:

您可以将这两个功能结合起来;强制转换为字符,然后转换为数字:

> fac <- factor(c("1","2","1","2"))
> as.numeric(as.character(fac))
[1] 1 2 1 2

【讨论】:

我试过这个,但我收到警告消息:“强制引入的 NAs。”这是什么意思? 或者这只是意味着其中一些不是以数字开头的吗? @Jeff 这意味着某些字符不是数字,因此当您使用as.numeric(....) 时它们会转换为NA。查看levels(fac)as.numeric(levels(fac))fac 替换为您的因子变量,看看哪些被强制转换为NA 您可以使用 hablar 的 convert() 来执行此操作。 df %&gt;% convert(num(column_name)) 安全地将因子强制转换为数值

以上是关于将因子转换为整数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失信息的情况下将因子转换为整数\数字?

如何连接因子,而不将它们转换为整数级别?

将数据框中的因子列转换为数字类型列[重复]

使用形状的因子级别将 pandas.DataFrame 转换为 numpy 张量 [重复]

如何将data.frame列从因子转换为数字[重复]

在不丢失信息的情况下将因子转换为数字 R(as.numeric() 似乎不起作用)[重复]