我正在使用reshape包操作数据框。在使用melt函数时,它将我的值列因子化了,这是一个问题,因为我想对其中的一些整数进行运算。
有人知道如何将因子强制转换为整数吗?使用as.character()
会将其转换为正确的字符,但我无法立即对其执行操作,而as.integer()
或as.numeric()
会将其转换为系统存储该因子的数字,这并不方便。
谢谢!
Jeff
我正在使用reshape包操作数据框。在使用melt函数时,它将我的值列因子化了,这是一个问题,因为我想对其中的一些整数进行运算。
有人知道如何将因子强制转换为整数吗?使用as.character()
会将其转换为正确的字符,但我无法立即对其执行操作,而as.integer()
或as.numeric()
会将其转换为系统存储该因子的数字,这并不方便。
谢谢!
Jeff
引用 factor
的帮助页面上的直接说法:
要将因子 f
转换回其原始数值,推荐使用 as.numeric(levels(f))[f]
,它比 as.numeric(as.character(f))
稍微更有效率一些。
你可以将两个函数结合起来;先转换为字符,然后再转换为数字:
> fac <- factor(c("1","2","1","2"))
> as.numeric(as.character(fac))
[1] 1 2 1 2
as.numeric(....)
时,它们会被转换为 NA
。查看 levels(fac)
和 as.numeric(levels(fac))
,将 fac
替换为您的因子变量,以查看哪些被强制转换为 NA
。 - Gavin Simpsondf %>% convert(num(column_name))
可以安全地将因子转换为数字。 - davsjob