如何将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
以上是 如何将NA顺序转换为R向量中的单个NA? 的全部内容, 来源链接: utcz.com/z/359819.html