試試這個:
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