gpt4 book ai didi

r - 如何将数据框列转换为数字类型?

转载 作者:行者123 更新时间:2023-12-03 04:05:59 25 4
gpt4 key购买 nike

如何将数据框列转换为数字类型?

最佳答案

由于(仍然)没有人得到复选标记,我假设您考虑了一些实际问题,主要是因为您尚未指定要转换为数字的向量类型。我建议您应该应用 transform 函数来完成您的任务。

现在我要演示某些“转换异常”:

# create dummy data.frame
d <- data.frame(char = letters[1:5],
fake_char = as.character(1:5),
fac = factor(1:5),
char_fac = factor(letters[1:5]),
num = 1:5, stringsAsFactors = FALSE)

让我们看一下data.frame

> d
char fake_char fac char_fac num
1 a 1 1 a 1
2 b 2 2 b 2
3 c 3 3 c 3
4 d 4 4 d 4
5 e 5 5 e 5

让我们运行:

> sapply(d, mode)
char fake_char fac char_fac num
"character" "character" "numeric" "numeric" "numeric"
> sapply(d, class)
char fake_char fac char_fac num
"character" "character" "factor" "factor" "integer"

现在你可能会问自己“异常在哪里?”好吧,我在 R 中遇到了一些非常奇怪的事情,而这并不是最令人困惑的事情,但这可能会让您感到困惑,尤其是当您在上床 sleep 之前阅读本文时。

这里是:前两列是字符。我特意将第二个nd称为fake_char。找出这个 character 变量与 Dirk 在他的回复中创建的变量的相似之处。它实际上是一个转换为字符数字向量。第 3rd 和第 4th 列是因子,最后一列是“纯”数字

如果您使用transform函数,您可以将fake_char转换为numeric,但不能将char变量转换为char变量本身。

> transform(d, char = as.numeric(char))
char fake_char fac char_fac num
1 NA 1 1 a 1
2 NA 2 2 b 2
3 NA 3 3 c 3
4 NA 4 4 d 4
5 NA 5 5 e 5
Warning message:
In eval(expr, envir, enclos) : NAs introduced by coercion

但是如果你对 fake_charchar_fac 做同样的事情,你会很幸运,并且不会出现 NA:

> transform(d, fake_char = as.numeric(fake_char), 
char_fac = as.numeric(char_fac))

char fake_char fac char_fac num
1 a 1 1 1 1
2 b 2 2 2 2
3 c 3 3 3 3
4 d 4 4 4 4
5 e 5 5 5 5

如果保存转换后的data.frame并检查modeclass,您将得到:

> D <- transform(d, fake_char = as.numeric(fake_char), 
char_fac = as.numeric(char_fac))

> sapply(D, mode)
char fake_char fac char_fac num
"character" "numeric" "numeric" "numeric" "numeric"
> sapply(D, class)
char fake_char fac char_fac num
"character" "numeric" "factor" "numeric" "integer"

因此,结论是:是的,您可以将字符向量转换为数字向量,但前提是它的元素是“可转换的”转换为数字如果向量中只有一个字符元素,则在尝试将该向量转换为数字时会出现错误 一个。

只是为了证明我的观点:

> err <- c(1, "b", 3, 4, "e")
> mode(err)
[1] "character"
> class(err)
[1] "character"
> char <- as.numeric(err)
Warning message:
NAs introduced by coercion
> char
[1] 1 NA 3 4 NA

现在,只是为了好玩(或练习),尝试猜测这些命令的输出:

> fac <- as.factor(err)
> fac
???
> num <- as.numeric(fac)
> num
???

向帕特里克·伯恩斯致以亲切的问候! =)

关于r - 如何将数据框列转换为数字类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2288485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com