当您从变量的子集时,如何在 R 的函数 range() 中包含小数位,这些小数位与 NA 不同



我正在尝试计算具有多个小数位的变量的范围,并且某些值NA。一个例子是:

df1<-data.frame(x=c(0.34567,1.34563,1.26745,NA,0.65789,0.903455,1.49567,NA, 0.28749),
                ID=c("A","B","A","B","A","B","A","B","A"))
df1
     x ID
1 0.35  A
2 1.35  B
3 1.27  A
4   NA  B
5 0.66  A
6 0.90  B
7 1.50  A
8   NA  B
9 0.29  A

我已经尝试了下面的代码,但我得到一个没有小数位的范围,因此没有用:

range(!is.na(df1$x))
[1] 0 1

我应该怎么做才能得到几个小数位?

当你做is.na时,你会得到TRUE/FALSE

!is.na(df1$x)
#[1]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE

当你对他们range时,TRUE被胁迫为 1,FALSE 为 0。因此,您的range显示为 0/1 .

range(!is.na(df1$x))
#[1] 0 1

如果要忽略NA值,rangena.rm参数默认为FALSE

range(df1$x, na.rm = TRUE)
#[1] 0.28749 1.49567

最新更新