簡體   English   中英

如何在保留NA值的同時使用條件語句重新編碼R中的變量?

[英]How can I recode variables in R using conditional statements, while keeping NA values?

示例/虛構數據:

假設我想重新編碼,以便如果一行在A下具有1,那么B下的NA被重新編碼為0。但是,如果一行在A下具有0,則午餐下的B仍然是NA。 “但是,A變量也具有不希望影響B值的NA值。

我一直在使用這樣的代碼: dat[dat$A==1,]$B<-0但它一直返回

 error: issuing values are not allowed in subscripted assignments of data frames due to the NA values. 
A  B   C  D   
1  NA  0  1    
0  NA  0  NA    
NA  1  1  1

使用data.table的選項

library(data.table)
setDT(df)[A==1 & is.na(B), B:=0][]

如果要將B中的所有1s都設置為0

setDT(df)[A==1, B:=0][]

否則base R方法將是

df$B[with(df, !!A & is.na(B))] <- 0

數據

df <- structure(list(A = c(1L, 0L, NA), B = c(NA, NA, 1L), C = c(0L, 
0L, 1L), D = c(1L, NA, 1L)), .Names = c("A", "B", "C", "D"), class =
"data.frame", row.names = c(NA, -3L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM