我有一個csv,我在導入時定義類。一些列是整數類。我遇到的問題是,如果某些用戶在其中一列中寫入「三個」而不是「3」,則整個功能將停止工作。將整數列中的字符單元格轉換爲NA,位於read.csv
我想讓他做的是在導入時將任何文本轉換爲NA。我已經看到你可以使用na.strings = ...,但這將適用於所有列,對不對?我只想從一列中排除字符,而不是從整個csv中排除字符。
有沒有一個簡單的解決方案,或者我必須手動檢查每個列的這些值並將它們轉換爲NA?
編輯:附加信息: 這是我的代碼如下所示:
df <- read.csv(text=capture.output(write.csv(d.xxx,row.names=FALSE)),
colClasses=d.yyy,
header = TRUE)
其中
d.xxx is a data frame containing the values and
d.yyy is a list containing "integer","character",etc. in the correct order
EDIT2:這是錯誤我得到:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
scan() expected 'a real', got '"2"'
如果列中有混合類,則可以在'read.csv'中指定'colClasses = c('integer','character')'等。因此,如果'colClasses'中指定的整數列中有'3',它將被轉換爲NA – akrun
您可以在使用'as.numeric()'導入後更改列類型嗎?當你有角色時它會產生新生代。 – Hugo
@akrun多數民衆贊成,我做了什麼,我希望會發生。相反,它不會導入文件,並說'預計真實的,得到了''' – Pablowa