R-缺少值和逻辑操作
我有这样一个数据框:R-缺少值和逻辑操作,r,if-statement,boolean-logic,na,R,If Statement,Boolean Logic,Na,我有这样一个数据框: ID VarA VarB 001 5 2 002 4 003 6 004 005 3 5 我想创建第三个变量VarC,其最大值介于VarA和VarB之间: ID VarA VarB VarC 001 5 2 5 002 4 4 003 6 6 004 005 3
ID VarA VarB
001 5 2
002 4
003 6
004
005 3 5
我想创建第三个变量VarC
,其最大值介于VarA
和VarB
之间:
ID VarA VarB VarC
001 5 2 5
002 4 4
003 6 6
004
005 3 5 5
我知道这必须非常简单。我尝试使用ifelse
函数,但我仅在VarA
或VarB
缺失时获得该功能
我怎样才能解决这个问题
谢谢。您只需与参数na.rm=TRUE一起使用即可
> myData <- read.table(text="ID VarA VarB
+ 001 5 2
+ 002 NA 4
+ 003 6 NA
+ 004 NA NA
+ 005 3 5", header=TRUE)
> myData$VarC <- apply(X=myData[,-1], MARGIN=1, FUN=max, na.rm=TRUE)
Warning message:
In FUN(newX[, i], ...) : no non-missing arguments to max; returning -Inf
> myData
ID VarA VarB VarC
1 1 5 2 5
2 2 NA 4 4
3 3 6 NA 6
4 4 NA NA -Inf
5 5 3 5 5
>myData myData$VarC myData
ID VarA VarB VarC
1 1 5 2 5
2 NA 4
3 3 6 NA 6
4 NA-Inf
5 5 3 5 5
请注意,第4行抛出了一个警告,因为没有未丢失的数据。如果需要,可以使用NA
覆盖-Inf
您只需要与参数一起使用na.rm=TRUE
> myData <- read.table(text="ID VarA VarB
+ 001 5 2
+ 002 NA 4
+ 003 6 NA
+ 004 NA NA
+ 005 3 5", header=TRUE)
> myData$VarC <- apply(X=myData[,-1], MARGIN=1, FUN=max, na.rm=TRUE)
Warning message:
In FUN(newX[, i], ...) : no non-missing arguments to max; returning -Inf
> myData
ID VarA VarB VarC
1 1 5 2 5
2 2 NA 4 4
3 3 6 NA 6
4 4 NA NA -Inf
5 5 3 5 5
>myData myData$VarC myData
ID VarA VarB VarC
1 1 5 2 5
2 NA 4
3 3 6 NA 6
4 NA-Inf
5 5 3 5 5
请注意,第4行抛出了一个警告,因为没有未丢失的数据。如果需要,可以使用
NA
覆盖-Inf
使用矢量化的pmax
并将na.rm
设置为TRUE:
with(myData,pmax(VarA,VarB,na.rm=TRUE))
1] 5 4 6 NA 5
使用矢量化的
pmax
并将na.rm
设置为TRUE:
with(myData,pmax(VarA,VarB,na.rm=TRUE))
1] 5 4 6 NA 5