我有一個數據框和一些數字列。某些行有一個0值,在統計分析中應該將其視爲空值。什麼是最快的方式來取代R中的所有0值爲NULL?將全部0值全部替換爲不適用
回答
更換0至NA:
df[df == 0] <- NA
data.table對象的等效語法是什麼? – dadrivr
我看到您獲得了很多選票,但不認爲這適合覆蓋值爲「0」且未被要求設置爲
#Sample data
set.seed(1)
dat <- data.frame(x = sample(0:2, 5, TRUE), y = sample(0:2, 5, TRUE))
#-----
x y
1 0 2
2 1 2
3 1 1
4 2 1
5 0 0
#replace zeros with NA
dat[dat==0] <- NA
#-----
x y
1 NA 2
2 1 2
3 1 1
4 2 1
5 NA NA
而不[<-
功能的另一種方法:
的採樣數據幀dat
(從無恥複製@大通的回答):
dat
x y
1 0 2
2 1 2
3 1 1
4 2 1
5 0 0
零可以替換爲NA
由is.na<-
功能:
is.na(dat) <- !dat
dat
x y
1 NA 2
2 1 2
3 1 1
4 2 1
5 NA NA
只能在數字領域的替代0
與NA
(即排除之類的因素),但它工作在一列逐列基礎:
col[col == 0 & is.numeric(col)] <- NA
有了一個功能,您可以將此應用到整個數據幀:
changetoNA <- function(colnum,df) {
col <- df[,colnum]
if (is.numeric(col)) { #edit: verifying column is numeric
col[col == -1 & is.numeric(col)] <- NA
}
return(col)
}
df <- data.frame(sapply(1:5, changetoNA, df))
雖然可以更換1:5
與您的數據框中的列數,或與1:ncol(df)
。
讓我假設你的data.frame是不同數據類型的混合,並不是所有的列都需要修改。
修改僅列12至18(總21),只是這樣做
df[, 12:18][df[, 12:18] == 0] <- NA
因爲有人問本作的Data.Table版本,因爲給定的data.frame解決方案不使用data.table,我在下面提供解決方案。
基本上,使用:=
運營商 - >DT[x == 0, x := NA]
library("data.table")
status = as.data.table(occupationalStatus)
head(status, 10)
origin destination N
1: 1 1 50
2: 2 1 16
3: 3 1 12
4: 4 1 11
5: 5 1 2
6: 6 1 12
7: 7 1 0
8: 8 1 0
9: 1 2 19
10: 2 2 40
status[N == 0, N := NA]
head(status, 10)
origin destination N
1: 1 1 50
2: 2 1 16
3: 3 1 12
4: 4 1 11
5: 5 1 2
6: 6 1 12
7: 7 1 NA
8: 8 1 NA
9: 1 2 19
10: 2 2 40
或'for(j in name(DT)); (DT,其(DT [[j]] == 0),j,NA)'。有關使用data.table查找和替換值的更詳細討論,請參見[這裏](http://stackoverflow.com/a/7249454/4241780)。 – JWilliman
- 1. 全部替換爲javascript
- 2. 全部替換 - ,+和。
- 3. 全局替換全部^ M換行
- 4. R - 將nan轉換爲0結果全部爲0
- 5. 如何替換href url而不用全部&替換爲&
- 6. javascript替換全部不起作用?
- 7. Android的值全部爲0後FFT
- 8. Java /全部替換引號
- 9. SQL查詢全部替換
- 10. 全部替換「?」與「\\?」在Java
- 11. SoaupUI - Groovy替換全部
- 12. 看後面全部替換
- 13. C#單詞全部替換
- 14. MacVim替換全部問題
- 15. PHP:Preg_match並全部替換
- 16. IntelliJ/Android Studio - 全部替換爲重構
- 17. 全部替換爲反斜槓
- 18. 全部替換爲字母 - 解釋
- 19. javascript全部替換爲javascript表達式?
- 20. 不區分大小寫全部替換
- 21. Mysql替換不是全部字符串?
- 22. 的JavaScript .replace不全部替換
- 23. 如何檢查三個值全部是0還是全部1
- 24. Grails:全部替換全部僅在列表頁
- 25. 將全部大寫轉換爲標題
- 26. Numpy:刪除全部爲0或0的值
- 27. 在Javascript中,替換全部在第二個字符後存在或全部替換爲兩個字符
- 28. 全部替換內側的圖案
- 29. 全部替換「和「從字符串
- 30. Java字符串操作替換全部
我不認爲你想/可以用NULL值替換,但NA在R術語中用於此目的。 – Chase