将因子转换为整数[重复]
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 %>% convert(num(column_name))
安全地将因子强制转换为数值以上是关于将因子转换为整数[重复]的主要内容,如果未能解决你的问题,请参考以下文章