首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果所选列中至少一列满足条件,则将值赋值给新列

如果所选列中至少一列满足条件,则将值赋值给新列
EN

Stack Overflow用户
提问于 2017-05-07 16:12:17
回答 2查看 222关注 0票数 0

问题是:我有一个空列"x",如果数字"3210“出现在从第11列到第32列中,它应该取值1,否则是x=0。

由于列数量众多,我无法使用"ifelse“检查3210是否一列一列出现。有更简单的方法吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-07 16:18:48

使用apply在行上运行%in%,因为命名参数是x,因此将传递给%in%table参数。也许:

代码语言:javascript
复制
 dat$x <- as.numeric( apply( dat[ , 11:32], 1, `%in%`, x="3210"))
 #now a tested solution on the example offered by @JeremyVolsey
票数 0
EN

Stack Overflow用户

发布于 2017-05-07 16:29:29

例如,数据

代码语言:javascript
复制
nos <- c(3210, 1280, 4460, 7840)
set.seed(123)
my_df <- data.frame(v1 = sample(nos, 20, replace = TRUE), v2 = sample(nos, 20, replace = TRUE), v3  = sample(nos, 20, replace = TRUE))

我使用了列1:3来演示答案

代码语言:javascript
复制
my_df$x <- ifelse(rowSums(my_df[,1:3] == 3210) >= 1, 1, 0)

     v1   v2  v3 x
1  1280 7840 3210 1
2  7840 4460 1280 0
3  1280 4460 1280 0
4  7840 7840 1280 0
5  7840 4460 3210 1
6  3210 4460 3210 1
7  4460 4460 3210 1
8  7840 4460 1280 0
9  4460 1280 1280 0
10 1280 3210 7840 1
11 7840 7840 3210 1
12 1280 7840 1280 0
13 4460 4460 7840 0
14 4460 7840 3210 1
15 3210 3210 4460 1
16 7840 1280 3210 1
17 3210 7840 3210 1
18 3210 3210 7840 1
19 1280 1280 7840 0
20 7840 3210 1280 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43833708

复制
相关文章

相似问题

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