创建一个标识是否满足所有条件的列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个标识是否满足所有条件的列相关的知识,希望对你有一定的参考价值。

我有一个带有数值的数据框。我想检查每一行是否满足特定条件,并创建一个新列,如果满足所有条件,则给出TRUE。示例标准为Current.eGFR大于或等于15,或小于60,并且Decline.12month小于或等于-4。

这是数据帧的head()

     ID Current.eGFR Decline.12month Decline.24.month
1   13         18.0            -1.3             -8.9
2   19         17.6             1.5             -2.3
3 1063         20.1            -5.3            -10.4
4  700         28.0            -0.2             -2.7
5 1518         14.6           -14.7            -45.2
6  197         19.0           -13.0             -5.1
答案

一种选择是将><|&一起使用

df1$newcol <- with(df1, (Current.eGFR >= 15 | Current.eGFR < 60) &
               Decline.12month <= -4)
df1$newcol
#[1] FALSE FALSE  TRUE FALSE  TRUE  TRUE

数据

df1 <- structure(list(ID = c(13L, 19L, 1063L, 700L, 1518L, 197L),
Current.eGFR = c(18, 
17.6, 20.1, 28, 14.6, 19), Decline.12month = c(-1.3, 1.5, -5.3, 
-0.2, -14.7, -13), Decline.24.month = c(-8.9, -2.3, -10.4, -2.7, 
-45.2, -5.1)), class = "data.frame", row.names = c("1", "2", 
"3", "4", "5", "6"))
另一答案

首先请注意,我们需要Current.eGFR> = 15 Current.eGFR <60,因为如果所有数字确实是,则所有数字都将满足条件。比较:

1:70 >=15 | 1:70 < 60  # bad
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [46] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [61] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

1:70 >=15 & 1:70 < 60  # good
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [37]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [49]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

进行更正,使用transform创建新列。

transform(mydf, ok = Current.eGFR >= 15 & Current.eGFR < 60 & Decline.12month < 4)

给予:

    ID Current.eGFR Decline.12month Decline.24.month    ok
1   13         18.0            -1.3             -8.9  TRUE
2   19         17.6             1.5             -2.3  TRUE
3 1063         20.1            -5.3            -10.4  TRUE
4  700         28.0            -0.2             -2.7  TRUE
5 1518         14.6           -14.7            -45.2 FALSE
6  197         19.0           -13.0             -5.1  TRUE

注意

假定可复制形式的输入mydf如下。

Lines <- "     ID Current.eGFR Decline.12month Decline.24.month
1   13         18.0            -1.3             -8.9
2   19         17.6             1.5             -2.3
3 1063         20.1            -5.3            -10.4
4  700         28.0            -0.2             -2.7
5 1518         14.6           -14.7            -45.2
6  197         19.0           -13.0             -5.1"
mydf <- read.table(text = Lines)

以上是关于创建一个标识是否满足所有条件的列的主要内容,如果未能解决你的问题,请参考以下文章

计算满足条件的列部分的平均值以创建新数据框

排除满足特定条件的元素的查询

如果在 Select-Query 中满足特定条件,则创建唯一标识符

MYSQL SELECT:如何获取一个额外的列,指示是不是满足 WHERE 子句中的第一个或第二个条件?

满足 2 个条件的 SQL SUM 值

满足条件时是不是可以在 GLSL 着色器中回调 C/C++ 函数/代码? [关闭]