R中的因子到数字

问题描述 投票:0回答:1

我是跟着这个帖子来的 此处 想知道如何在R Studio中把我的因子变成一个数值。问题中的因子确实有NA,是我自己放进去的,我需要在R Studio中使用这个因子。我需要把这个因子用在 tapply() 代码,并希望确保NA不会成为一个问题。

示例代码。

factor.1[2] <-NA
factor.1[7] <-NA
factor.1[12] <-NA

然后,按照链接帖子上的说明,

num.fact1 <- as.numeric(levels(factor.1))[factor.1]

我得到的 "错误 "是 "NA's introduced by coercion". 但它确实让我继续,无论如何。现在,点击。

tapply(
    num.fact1,
    factor.2,
    mean, na.rm=TRUE
)

我想输出的结果看起来很准确。我想确保我得到的 "NA's introduced by coercion "的错误不会成为问题,特别是当我把这个笔记本编织成PDF时。

r rstudio na tapply
1个回答
1
投票

在这种情况下,将NA赋给变量是无害的。然而,警告的原因更令人担忧。看看这个例子。

factor.1 <- factor(c("5.6", "4.7", "10.1", "2.O", "3.6", "1.7"))
factor.1
# [1] 5.6  4.7  10.1 2.O  3.6  1.7 
# Levels: 1.7 10.1 2.O 3.6 4.7 5.6

它们看起来都像数字,对吧?现在把它们转换为数字。

num.fact.1 <- as.numeric(levels(factor.1))[factor.1]
# Warning message:
# NAs introduced by coercion

消息警告你有些数据不能被转换为数字,所以结果是NA. 让我们检查一下是哪些数据。

data.frame(factor.1, num.fact.1)[which(is.na(num.fact.1) & !is.na(factor.1)), ]
#   factor.1 num.fact.1
# 5      2.O         NA

第五个数据是 "2. O "而不是2. 0. 这些数据可能需要进行一些清理。

© www.soinside.com 2019 - 2024. All rights reserved.