200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > dataframe如何转换为数字_如何将数据框列转换为数字类型?

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

时间:2023-09-20 14:41:19

相关推荐

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

由于(仍然)没有人得到复选标记,我认为你有一些实际问题,主要是因为你没有指定你想要转换成什么类型的矢量numeric。我建议你应该应用transform函数来完成你的任务。

现在我要证明某些“转换异常”:

# create dummy data.frame

d

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,这是不是在最混杂的东西,但它可以迷惑你,特别是如果你滚进睡前阅读。

这里是:前两列是character。我故意打电话给第二个fake_char。找出这个character变量与Dirk在他的回复中创建的变量的相似性。它实际上是一个numerical转换为的向量character。3 次和4 次的列是factor,最后一个是“纯粹的” numeric。

如果使用transform函数,则可以转换fake_char为变量本身numeric,而不是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_char和char_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并检查mode并且class,您将获得:

> D

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"

因此,结论是:是的,您可以将character矢量转换为numeric一个,但numeric前提是它的元素是“可转换”的。如果character向量中只有一个元素,那么在尝试将该向量转换为numerical1 时会出错。

只是为了证明我的观点:

> err

> mode(err)

[1] "character"

> class(err)

[1] "character"

> char

Warning message:

NAs introduced by coercion

> char

[1] 1 NA 3 4 NA

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

> fac

> fac

???

> num

> num

???

亲切的问候帕特里克伯恩斯!=)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。