gpt4 book ai didi

R- 基于其他列的现值的新列

转载 作者:行者123 更新时间:2023-12-04 09:38:56 24 4
gpt4 key购买 nike

我想根据其他任何列是否有任何现值来创建一个数据框列。

示例:c 列的创建取决于该行的其余部分是否有任何现值。

   age  bmi hyp chl  c
1 1 NA NA NA NA
2 2 22.7 1 187 1
3 1 NA 1 187 1
4 3 NA NA NA NA
5 1 20.4 1 113 1
6 3 NA NA 184 1
7 1 22.5 1 118 1
8 1 30.1 1 187 1
9 2 22.0 1 238 1
10 2 NA NA NA NA
11 1 NA NA NA NA
12 2 NA NA NA NA
13 3 21.7 1 206 1
14 2 28.7 2 204 1
15 1 29.6 1 NA 1
16 1 NA NA NA NA
17 3 27.2 2 284 1
18 2 26.3 2 199 1
19 1 35.3 1 218 1
20 3 25.5 2 NA 1
21 1 NA NA NA NA
22 1 33.2 1 229 1
23 1 27.5 1 131 1
24 3 24.9 1 NA 1
25 2 27.4 1 186 1

c 列是使用以下代码创建的:

df <- transform(df, c=ifelse(!(is.na(bmi)) | !(is.na(hyp)) | !(is.na(chl)),1,NA))

我的问题是:如何在不指定列的情况下创建执行上述操作的函数。即,如果我有一个包含 45 列的数据集,我不想在 ifelse 语句中命名所有列。

非常感谢。

最佳答案

我们可以在逻辑矩阵上使用 rowSums,然后将其转换为 NA 和 1 的vector

df$c <- NA^!rowSums(!is.na(df[-1]))
df$c
#[1] NA 1 1 NA 1 1 1 1 1 NA NA NA 1 1 1 NA 1 1 1 1 NA 1 1 1 1

关于R- 基于其他列的现值的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46151615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com