【问题标题】:Create binary column (0/1) based on condition in another column根据另一列中的条件创建二进制列 (0/1)
【发布时间】:2013-11-14 05:08:21
【问题描述】:

我在数据框中有一列数据

Ozone   Solar.R Wind    Temp    Month   Day
41  190 7.4 67  5   1
36  118 8   72  5   2
12  149 12.6    74  5   3
18  313 11.5    62  5   4
NA  NA  14.3    56  5   5
28  NA  14.9    66  5   6
23  299 8.6 65  5   7
19  99  13.8    59  5   8
8   19  20.1    61  5   9
NA  194 8.6 69  5   10
7   NA  6.9 74  5   11
16  256 9.7 69  5   12
11  290 9.2 66  5   13
14  274 10.9    68  5   14
18  65  13.2    58  5   15

如果 Temp 列大于 70,我需要根据条件将 Temp 列更改为 1 或 0。因此,当 Temp 大于 70 时,我需要一个 1 列,当它小于 70 时,我需要一个 0 列,所以我可以做一个使用 Temp 作为二元变量进行回归。

R 将接受条件语句

cfv <- mydata$Temp
x <- cfv > 70 
for(i in nrow(cfv)) {if(x = TRUE) {1} else if(x = FALSE) {0}

但我无法进一步使用它来创建新列。

【问题讨论】:

    标签: r


    【解决方案1】:

    您也可以使用ifelse,它是向量化的 if-else 函数

    mydata$NewTemp <- ifelse(mydata$Temp>0, 1, 0)
    

    【讨论】:

      【解决方案2】:

      你想太多了。 TRUEFALSE 可以通过使用 as.numeric 分别强制转换为 10

      mydf$Temp > 70
      # [1] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
      as.numeric(mydf$Temp > 70)
      # [1] 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0
      

      因此,要创建新列,您只需执行以下操作:

      mydf$TempBin <- as.numeric(mydf$Temp > 70)
      mydf
      #    Ozone Solar.R Wind Temp Month Day TempBin
      # 1     41     190  7.4   67     5   1       0
      # 2     36     118  8.0   72     5   2       1
      # 3     12     149 12.6   74     5   3       1
      # 4     18     313 11.5   62     5   4       0
      # 5     NA      NA 14.3   56     5   5       0
      # 6     28      NA 14.9   66     5   6       0
      # 7     23     299  8.6   65     5   7       0
      # 8     19      99 13.8   59     5   8       0
      # 9      8      19 20.1   61     5   9       0
      # 10    NA     194  8.6   69     5  10       0
      # 11     7      NA  6.9   74     5  11       1
      # 12    16     256  9.7   69     5  12       0
      # 13    11     290  9.2   66     5  13       0
      # 14    14     274 10.9   68     5  14       0
      # 15    18      65 13.2   58     5  15       0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-02
        • 2021-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        相关资源
        最近更新 更多