问题是:我有一个空列"x",如果数字"3210“出现在从第11列到第32列中,它应该取值1,否则是x=0。
由于列数量众多,我无法使用"ifelse“检查3210是否一列一列出现。有更简单的方法吗?
谢谢。
发布于 2017-05-07 16:18:48
使用apply在行上运行%in%,因为命名参数是x,因此将传递给%in%的table参数。也许:
dat$x <- as.numeric( apply( dat[ , 11:32], 1, `%in%`, x="3210"))
#now a tested solution on the example offered by @JeremyVolsey发布于 2017-05-07 16:29:29
例如,数据
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来演示答案
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 1https://stackoverflow.com/questions/43833708
复制相似问题