如何将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 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短