创建一个标识是否满足所有条件的列
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 中满足特定条件,则创建唯一标识符