我有一个按邮政编码组织的数据框(称为:“ df”)。我想将“ Zip”更改为数字数据类型,但是当我应用“ is.numeric”时,它将变成“逻辑”数据类型。当我尝试将其他变量从“数字”转换为“字符”或任何其他数据类型时,它也将其转换为“逻辑”数据类型。 我尝试更改可变数据类型的代码行:
df$Zip = is.numeric(df$Zip)
df$Zip = is.numeric(is.character(df$Zip))
数据概述:
'data.frame': 32989 obs. of 22 variables:
$ Zip : Factor w/ 32990 levels "01001","01002",..: 1 2 3 4 5 6 7 8 9 10 ...
$ MedianAge : num 45.8 23.6 19.9 45.4 43.8 49.9 66.2 48.1 39.9 43.2 ...
$ MedianAgeMale : num 43.2 23.4 19.9 42.8 40.8 51.3 68.1 46.1 39.9 44.4 ...
我的主要目标是创建一个子集,其中仅包含邮政编码范围为90001:97635的以下行:
CAzipcodes = subset(df,Zip>90001 & Zip<97635)
除非“ Zip”是“数字”数据类型,否则它不会读取条件。如果还有其他方法可以通过“因子”数据类型对数据进行子集设置,请告知我。
答案 0 :(得分:1)
从文档中:
is.numeric的默认方法如果其参数为,则返回TRUE 模式为“数字”(类型为“ double”或“ integer”)而不是因数,并且 否则为FALSE。即is.integer(x)|| is.double(x)或(mode(x) ==“数字”)&&!is.factor(x)。
所以你想要
df$Zip = as.numeric(df$Zip)
或使用dplyr和管道
df %<>% mutate(Zip = as.numeric(Zip))