对于给定的阈值,将表转换为0和1

时间:2012-10-17 10:34:01

标签: r transform

我有一个表(t1)如下:

t1 <- array(1:20, dim=c(10,10))

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11    1   11    1   11    1   11    1    11
 [2,]    2   12    2   12    2   12    2   12    2    12
 [3,]    3   13    3   13    3   13    3   13    3    13
 [4,]    4   14    4   14    4   14    4   14    4    14
 [5,]    5   15    5   15    5   15    5   15    5    15
 [6,]    6   16    6   16    6   16    6   16    6    16
 [7,]    7   17    7   17    7   17    7   17    7    17
 [8,]    8   18    8   18    8   18    8   18    8    18
 [9,]    9   19    9   19    9   19    9   19    9    19
[10,]   10   20   10   20   10   20   10   20   10    20

我想将此表转换为1或0.如果单元格数> 5,我们给它1,如果单元格数是<5或= 5,我们给它一个0.这样之后转型,表t1将成为以下内容:

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    0   1    0   1    0    1    0    1    0    1
 [2,]    0   1    0   1    0    1    0    1    0    1
 [3,]    0   1    0   1    0    1    0    1    0    1
 [4,]    0   1    0   1    0    1    0    1    0    1
 [5,]    0   1    0   1    0    1    0    1    0    1
 [6,]    1   1    1   1    1    1    1    1    1    1
 [7,]    1   1    1   1    1    1    1    1    1    1
 [8,]    1   1    1   1    1    1    1    1    1    1
 [9,]    1   1    1   1    1    1    1    1    1    1
[10,]    1   1    1   1    1    1    1    1    1    1

我应该使用哪些命令?

2 个答案:

答案 0 :(得分:5)

您可以使用ifelse()声明:

ifelse(t1 > 5, 1, 0)

由于t1 > 5之类的语句会产生TRUEFALSE的矩阵,并且由于R将TRUE视为“1”和{{ 1}}为“FALSE”,对于此特定转换,您还可以执行以下操作:

0

答案 1 :(得分:0)

我还没有计时,但ifelse的替代方法就是使用条件语句。

foo <- bar < 5 哦,伙计,朱利叶斯去了10秒就打败了我。