【发布时间】:2020-01-24 14:53:06
【问题描述】:
我有一个数据集,我试图将一个因子转换为一个数值变量,我第一次运行它时它似乎工作正常,但现在我更改了向量内容 as.numeric() 函数返回不同(可能是以前的)值,而不是现在向量中的值,尽管这些值似乎没有存储在任何地方。但是,如果我先转换为字符,它就可以正常工作。我使用的代码是:
rm(reprex) # ensure does not exist from previously
reprex <- data.frame(rbind(c("BT",8),c("BL", 1), c("TS",1), c("SA", 7), c("S", 5), c("LS",5), c("M",3), c("CV",3), c("CF",3), c("PE",3)))
names(reprex) <-c("Post Area", "Count")
reprex$Countnum <- as.numeric(reprex$Count) # should be same as Count
reprex$Countnum_char <- as.numeric(as.character(reprex$Count)) # is same as Count
head(reprex)
给予:
Post Area Count Countnum Countnum_char
1 BT 8 5 8
2 BL 1 1 1
3 TS 1 1 1
4 SA 7 4 7
5 S 5 3 5
6 LS 5 3 5
这是为什么?如果我在转换为数字之前将其转换为字符似乎可以避免它,但我很困惑为什么会发生这种情况以及奇怪映射的(我怀疑来自数据框的先前版本)因子级别正在存储,以便在我删除对象后它们仍然存在。
【问题讨论】: