试试这个:
BELe<-read.table("BEL.Exposures_1x1.txt",skip=1, colClasses="numeric", header=TRUE)[,-5]
或者你可以肯定张贴文件的只是一点点,并没有违反至少任何版权法在我的管辖范围(我认为这是同一个像人死亡数据库)。
Belgium, Exposure to risk (period 1x1) Last modified: 04-Feb-2011, MPv5 (May07)
Year Age Female Male Total
1841 0 61006.15 62948.23 123954.38
1841 1 55072.53 56064.21 111136.73
1841 2 51480.76 52521.70 104002.46
1841 3 48750.57 49506.71 98257.28
.... . ....
所以我可能会建议更加准确colClasses:
BELe<-read.table("BEL.Exposures_1x1.txt",skip=2, # really two lines to skip I think
colClasses=c(rep("integer", 2), rep("numeric",3)),
header=TRUE)[,-5]
我怀疑promlem发生,因为像这些行:
1842 110+ 0.00 0.00 0.00
所以,你需要确定如何您对维护110+
值有很大的兴趣。用我的方法,他们将被强制为NA
's。 (嗯,我还以为他们会但像你,我得到了一个错误,以便需要此多步骤的过程:
BELe<-read.table("Exposures_1x1.txt",skip=2,
header=TRUE)
BELe[ , 2:5] <- lapply(BELe[ , 2:5], as.character)
str(BELe)
#-------------
'data.frame': 18759 obs. of 5 variables:
$ Year : int 1841 1841 1841 1841 1841 1841 1841 1841 1841 1841 ...
$ Age : chr "0" "1" "2" "3" ...
$ Female: chr "61006.15" "55072.53" "51480.76" "48750.57" ...
$ Male : chr "62948.23" "56064.21" "52521.70" "49506.71" ...
$ Total : chr "123954.38" "111136.73" "104002.46" "98257.28" ...
#-------------
BELe[ , 2:5] <- lapply(BELe[ , 2:5], as.numeric)
#----------
Warning messages:
1: In lapply(BELe[, 2:5], as.numeric) : NAs introduced by coercion
2: In lapply(BELe[, 2:5], as.numeric) : NAs introduced by coercion
3: In lapply(BELe[, 2:5], as.numeric) : NAs introduced by coercion
4: In lapply(BELe[, 2:5], as.numeric) : NAs introduced by coercion
str(BELe)
#-----------
'data.frame': 18759 obs. of 5 variables:
$ Year : int 1841 1841 1841 1841 1841 1841 1841 1841 1841 1841 ...
$ Age : num 0 1 2 3 4 5 6 7 8 9 ...
$ Female: num 61006 55073 51481 48751 47014 ...
$ Male : num 62948 56064 52522 49507 47862 ...
$ Total : num 123954 111137 104002 98257 94876 ...
# and just to show that tey are not really integers:
BELe$Total[1:5]
#[1] 123954.38 111136.73 104002.46 98257.28 94875.89
'read.csv(...,stringsAsFactors = FALSE)'(编辑:这jives与@ josilber的评论) –
你正在转换为csv的文本文件中是什么?它是如何工作的?请张贴您遇到的问题和您尝试的内容的示例。 – josliber
至于暗示你最有可能在列中有一些字符。这会导致R将它作为最初的因素进行存储。当在一个因子上使用as.numeric时,你不会得到原始数字 - 你会得到因子水平。给定的答案将允许您以字符的形式读取它 - 此时您应该检查数据以查看哪些值不是“实际数字”。 – Dason