如何将NA顺序转换为R向量中的单个NA?
有时,序列中缺少值,R程序将其记录为NA(不可用)。在这种情况下,我们可能希望用单个NA值替换连续的NA记录。可以使用is.na和diff函数来完成此操作,如以下示例所示。
示例
x1<-sample(c(NA,1),20,replace=TRUE) x1
输出结果
[1] 1 1 NA 1 NA 1 NA NA 1 1 NA NA NA NA 1 NA 1 1 1 NA
示例
x1[!(is.na(x1)&diff(c(FALSE,is.na(x1)))==0)]
输出结果
[1] 1 1 NA 1 NA 1 NA 1 1 NA 1 NA 1 1 1 NA
示例
x2<-sample(c(NA,2,3),200,replace=TRUE) x2
输出结果
[1] NA NA 2 NA 2 2 NA 3 NA NA NA 3 NA 2 NA 2 3 3 NA NA NA 3 NA NA 2 [26] 2 NA NA 3 2 3 NA 2 NA 3 2 3 2 2 3 3 NA 3 2 3 NA 3 2 2 NA [51] NA NA NA 2 NA NA 3 2 NA 3 2 3 NA 3 3 2 NA 2 3 NA 3 2 3 2 3 [76] NA NA 2 NA 3 NA NA 3 3 2 2 2 3 NA NA 3 2 3 NA 2 2 NA NA 2 3 [101] NA NA 3 3 3 NA NA 3 2 2 2 NA NA 2 NA 3 3 NA 3 NA 2 NA NA 3 NA [126] NA 2 3 2 3 2 NA 2 3 3 2 NA NA NA 3 2 2 2 3 NA NA 2 3 2 NA [151] 2 NA 2 3 2 NA NA NA NA NA 3 NA 3 3 NA 3 2 2 2 2 NA 3 2 NA 2 [176] 3 3 2 3 3 NA 3 NA 2 3 3 2 2 3 2 2 2 NA NA 2 3 NA 3 NA 3
示例
x2[!(is.na(x2)&diff(c(FALSE,is.na(x2)))==0)]
输出结果
[1] NA 2 NA 2 2 NA 3 NA 3 NA 2 NA 2 3 3 NA 3 NA 2 2 NA 3 2 3 NA [26] 2 NA 3 2 3 2 2 3 3 NA 3 2 3 NA 3 2 2 NA 2 NA 3 2 NA 3 2 [51] 3 NA 3 3 2 NA 2 3 NA 3 2 3 2 3 NA 2 NA 3 NA 3 3 2 2 2 3 [76] NA 3 2 3 NA 2 2 NA 2 3 NA 3 3 3 NA 3 2 2 2 NA 2 NA 3 3 NA [101] 3 NA 2 NA 3 NA 2 3 2 3 2 NA 2 3 3 2 NA 3 2 2 2 3 NA 2 3 [126] 2 NA 2 NA 2 3 2 NA 3 NA 3 3 NA 3 2 2 2 2 NA 3 2 NA 2 3 3 [151] 2 3 3 NA 3 NA 2 3 3 2 2 3 2 2 2 NA 2 3 NA 3 NA 3
示例
x3<-sample(c(5,NA),200,replace=TRUE) x3
输出结果
[1] NA NA NA NA NA NA 5 5 5 5 5 NA NA 5 NA NA NA NA 5 5 5 NA NA NA 5 [26] NA 5 NA 5 5 5 NA NA NA NA 5 NA NA NA NA 5 5 5 5 NA 5 5 5 NA 5 [51] NA NA 5 NA NA NA NA 5 5 5 5 5 5 NA NA 5 5 NA 5 5 NA NA NA 5 5 [76] 5 NA 5 NA 5 5 5 5 5 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA NA NA 5 [101] 5 5 5 5 5 NA NA 5 NA NA NA 5 NA NA 5 5 5 5 5 NA NA NA 5 5 5 [126] NA 5 NA NA NA 5 5 NA NA 5 NA NA NA 5 NA NA 5 NA 5 NA NA 5 NA NA 5 [151] 5 NA 5 5 5 NA 5 5 5 NA 5 5 5 5 NA NA NA NA NA NA NA 5 NA NA 5 [176] 5 NA 5 5 5 NA 5 5 5 NA 5 NA NA 5 5 5 5 NA NA 5 NA NA NA 5 5
示例
x3[!(is.na(x3)&diff(c(FALSE,is.na(x3)))==0)]
输出结果
[1] NA 5 5 5 5 5 NA 5 NA 5 5 5 NA 5 NA 5 NA 5 5 5 NA 5 NA 5 5 [26] 5 5 NA 5 5 5 NA 5 NA 5 NA 5 5 5 5 5 5 NA 5 5 NA 5 5 NA 5 [51] 5 5 NA 5 NA 5 5 5 5 5 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA 5 5 [76] 5 5 5 5 NA 5 NA 5 NA 5 5 5 5 5 NA 5 5 5 NA 5 NA 5 5 NA 5 [101] NA 5 NA 5 NA 5 NA 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA 5 5 5 5 NA [126] 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA 5 NA 5 5 5 5 NA 5 NA 5 5
示例
x4<-sample(c(499,NA,501),200,replace=TRUE) x4
输出结果
[1] NA 501 501 501 501 NA 499 NA 499 NA 501 499 499 NA NA NA 499 501 [19] 501 NA NA 499 499 501 501 499 499 501 NA NA NA 501 501 501 499 NA [37] 501 501 499 499 499 NA NA 499 499 499 499 NA 501 501 501 NA 501 501 [55] 499 501 499 499 501 NA NA 501 501 NA 499 501 499 NA 499 501 499 NA [73] NA 501 501 501 501 501 NA 501 499 501 499 501 499 501 NA 499 NA NA [91] 501 NA NA 501 499 501 NA NA NA NA NA NA 499 501 501 501 NA 501 [109] NA 499 NA 501 499 NA 499 499 501 499 499 499 501 NA 501 NA NA 501 [127] NA 499 501 NA 501 501 NA NA 501 NA 499 499 499 NA NA 501 501 501 [145] 501 NA 499 NA NA 501 501 NA 501 NA NA 499 499 501 NA 501 NA NA [163] 501 NA 499 NA 499 499 501 501 501 NA 501 501 NA NA 501 501 501 499 [181] 499 501 499 501 501 NA 501 NA 499 NA NA 499 501 NA 499 501 NA 501 [199] NA 501
示例
x4[!(is.na(x4)&diff(c(FALSE,is.na(x4)))==0)]
输出结果
[1] NA 501 501 501 501 NA 499 NA 499 NA 501 499 499 NA 499 501 501 NA [19] 499 499 501 501 499 499 501 NA 501 501 501 499 NA 501 501 499 499 499 [37] NA 499 499 499 499 NA 501 501 501 NA 501 501 499 501 499 499 501 NA [55] 501 501 NA 499 501 499 NA 499 501 499 NA 501 501 501 501 501 NA 501 [73] 499 501 499 501 499 501 NA 499 NA 501 NA 501 499 501 NA 499 501 501 [91] 501 NA 501 NA 499 NA 501 499 NA 499 499 501 499 499 499 501 NA 501 [109] NA 501 NA 499 501 NA 501 501 NA 501 NA 499 499 499 NA 501 501 501 [127] 501 NA 499 NA 501 501 NA 501 NA 499 499 501 NA 501 NA 501 NA 499 [145] NA 499 499 501 501 501 NA 501 501 NA 501 501 501 499 499 501 499 501 [163] 501 NA 501 NA 499 NA 499 501 NA 499 501 NA 501 NA 501
示例
x5<-sample(c(1025,NA),100,replace=TRUE) x5
输出结果
[1] NA 1025 NA NA 1025 1025 1025 NA NA NA 1025 1025 1025 NA NA [16] NA 1025 NA 1025 1025 1025 NA 1025 NA NA 1025 1025 1025 NA 1025 [31] 1025 1025 NA 1025 NA NA 1025 1025 1025 NA NA NA 1025 NA NA [46] 1025 NA NA NA NA 1025 NA 1025 1025 1025 1025 NA 1025 NA 1025 [61] 1025 1025 NA NA 1025 1025 NA 1025 NA NA 1025 NA NA NA NA [76] NA NA 1025 1025 1025 1025 1025 1025 1025 NA NA NA 1025 1025 NA [91] NA NA 1025 NA NA 1025 NA 1025 1025 1025
示例
x5[!(is.na(x5)&diff(c(FALSE,is.na(x5)))==0)]
输出结果
[1] NA 1025 NA 1025 1025 1025 NA 1025 1025 1025 NA 1025 NA 1025 1025 [16] 1025 NA 1025 NA 1025 1025 1025 NA 1025 1025 1025 NA 1025 NA 1025 [31] 1025 1025 NA 1025 NA 1025 NA 1025 NA 1025 1025 1025 1025 NA 1025 [46] NA 1025 1025 1025 NA 1025 1025 NA 1025 NA 1025 NA 1025 1025 1025 [61] 1025 1025 1025 1025 NA 1025 1025 NA 1025 NA 1025 NA 1025 1025 1025
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短