繁体   English   中英

将条件中的NA替换为零

[英]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

此正则表达式将以下匹配项替换为0NA后跟一个逗号和一个数字,而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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM