我是跟着这个帖子来的 此处 想知道如何在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时。
在这种情况下,将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. 这些数据可能需要进行一些清理。