[英]How to recode negative values in a set of variables based on if conditional statement in 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.