![](/img/trans.png)
[英]Repacing NAs before a non-zero value to a zero and replacing zeros after a non-zero values to NAs in r
[英]Replacing NAs in R with condition to zero
我有一个名为mydf
数据mydf
。 如果满足以下条件,我需要将mydf中的NAs
替换为(零)“ 0
”:if number, NA
; 或NA
,数字存在; 那么NA
必须为0
否则其他所有NA都保持不变。 结果如下所示。
mydf
A B C
1,3 1,NA NA,1
NA,4 0,0 5,NA
NA NA,NA NA,6
结果
A B C
1,3 1,0 0,1
0,4 0,0 5,0
NA NA,NA 0,6
您可以为该任务使用正则表达式。
mydf[] <- lapply(mydf, sub, pattern = "NA(?=,[0-9])|(?<=[0-9],)NA",
replacement = "0", perl = TRUE)
mydf
# A B C
# 1 1,3 1,0 0,1
# 2 0,4 0,0 5,0
# 3 NA NA,NA 0,6
此正则表达式将以下匹配项替换为0
: NA
后跟一个逗号和一个数字,而NA
前跟一个数字和一个逗号。
对于此解决方案,我假设mydf
的结构如下:
mydf <- structure(list(A = c("1,3", "NA,4", "NA"), B = c("1,NA", "0,0",
"NA,NA"), C = c("NA,1", "5,NA", "NA,6")), .Names = c("A", "B",
"C"), row.names = c(NA, -3L), class = "data.frame")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.