使用 R 中的 as.numeric 函数将因子转换为数字
本文将演示如何在 R 中将因子转换为数字的多种方法。
在 R 中使用 as.numeric
函数将因子转换为数字
as
函数通常用于将数据类型显式转换为另一种类型。转换过程在 R 术语中称为强制转换,它表示其他编程语言中存在的强制转换概念。当我们调用函数 as.logical
时,它会尝试将传递的参数强制转换为逻辑类型。类似地,as.character
和 as.numeric
将给定的参数转换为相应的类型。
请注意
,转换为逻辑类型的任何数字(零除外)都表示 TRUE 值,甚至是负值。
> as.logical(31)
[1] TRUE
> as.logical(-31)
[1] TRUE
> as.character(31)
[1] "31"
> as.numeric(FALSE)
[1] 0
> as.numeric(TRUE)
[1] 1
R 还实现了隐式类型强制规则,当对由不同类型组成的向量进行算术运算时需要这些规则。如以下代码片段所示,如果原子向量包含字符串,则其他所有元素也会转换为字符串。如果向量包含逻辑、数字和字符串的混合元素,它们将被强制转换为字符串类型。最后,当向量包含数字和逻辑时,将后者转换为数字。
> v1 <- c(1, "two", 3, 4, 5, 6)
> typeof(v1)
[1] "character"
> v1 <- c(T, "two", 3, 1, F, T)
> typeof(v1)
[1] "character"
> v1 <- c(1, T, 3, F, 5, 6)
> typeof(v1)
[1] "double"
将因子转换为数字时,重要的是要注意 as.numeric
将只返回底层整数表示,这几乎没有意义并且不对应于因子级别。可以使用 unclass
函数检查因子对象是如何在内部存储的。请注意,f2
因子的索引为 2 1 2 3
,通常使用 as.number
调用返回,如下面的代码示例所示:
> f2 <- factor(c(3, 2, 3, 4))
> f2
[1] 3 2 3 4
Levels: 2 3 4
> f2.n <- as.numeric(f2)
> unclass(f2)
[1] 2 1 2 3
attr(,"levels")
[1] "2" "3" "4"
> f2.n
[1] 2 1 2 3
在 R 中结合 as.character
和 as.numeric
函数将因子转换为数字
通过组合 as.character
和 as.numeric
函数,可以将因子级别转换为整数类型。as.character
以字符串形式返回因子水平。然后我们可以调用 as.numeric
函数将字符串强制转换为数字。
> f2 <- factor(c(3, 2, 3, 4))
> f2.c <- as.character(f2)
> f2.c
[1] "3" "2" "3" "4"
> f2.c <- as.numeric(as.character(f2))
> f2.c
[1] 3 2 3 4
相关文章
R 中具有多个条件的函数向量化
发布时间:2023/03/21 浏览次数:64 分类:编程语言
-
一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更
在 R 中读取 xlsx 文件
发布时间:2023/03/21 浏览次数:66 分类:编程语言
-
在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。