如何将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

回到顶部