首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ifelse条件从R中多个变量的条件创建一个新变量

使用ifelse条件从R中多个变量的条件创建一个新变量
EN

Stack Overflow用户
提问于 2022-04-27 13:30:55
回答 2查看 61关注 0票数 0

我对R非常陌生。我有一个名为RWA2010LONG的表,包含65个变量。我希望根据以下条件从表RWA2010LONG的30:49变量和同一表的另一个变量(BIRTH)中创建一个名为BIRTH的新变量:对于每一行,如果表RWA2010LONG的变量30:49的值之一等于变量BIRTH的值,则NEWVAR取值1。否则,NEWVAR将得到0值--这是我试图做的:

代码语言:javascript
运行
复制
RWA2010LONG$ NEWVAR <- for (i in colnames(RWA2010LONG[30:49])){ifelse(i==RWA2010LONG$BIRTH, 1,0)}
EN

回答 2

Stack Overflow用户

发布于 2022-04-27 13:45:00

这是一种方法。由于您没有提供数据,所以我正在编写一些示例数据,并检查列5到10中的任何值是否与BIRTH相同

代码语言:javascript
运行
复制
#Example data
df <- data.frame(matrix(rnbinom(100, mu = 5, size = 0.5), ncol = 10,
             dimnames = list(c(sprintf("obs_%s", 1:10)),
                             c("BIRTH",sprintf("col_%s", 2:10)))))

df$newvar <- apply(df[,5:10] == df$BIRTH, 1, any)*1

apply语句根据行检查条件df[,5:10] == df$BIRTH ( 1指示按行应用条件,如果为了将来的引用,它将按列检查条件),如果满足条件,则返回TRUEFALSE*1将这些逻辑转换为一个数值。

输出:

代码语言:javascript
运行
复制
#            BIRTH col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9 col_10  newvar
# obs_1      0     3     4     0     6    18     0    10     5      7      1
# obs_2      5     1     0     7     5     0     2     2     2      3      1
# obs_3      1     2     4     2     1    13    14     1     2      8      1
# obs_4      1     0     0     0    11     0     0     0    15      0      0
# obs_5      1     9     1     0     4    27     2     1     0      0      1
# obs_6      5     1     0     2     0     7     2     4     0      0      0
# obs_7      1     0     0     6     0     0     1     5     0      0      1
# obs_8     44     0    15     1     1     0     1     1     0      6      0
# obs_9      6     6     0     0     0     4    17     0     6      1      1
# obs_10     0     2     0     0     2    11     2     1     9      2      0
票数 2
EN

Stack Overflow用户

发布于 2022-04-27 15:02:21

带有if_any的选项

代码语言:javascript
运行
复制
library(dplyr)
df <- df %>%
       mutate(newvar = +(if_any(5:10, ~ .x == BIRTH)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72029697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档