如何使用NA重新编码变量?

时间:2018-02-14 06:01:48

标签: r

我想在以下数据框中将变量D2重新编程为D3

    D1          D2          D3
[1] Yes    0-15 MINUTES    7.5
[2] Yes    15-30 MINUTES   22.5
[3] Yes    30-60 MINUTES   45
[4] Yes       NA           NA
[5] NEVER     NA           0

基本上,它正在将D2转换为其数字中点。但是,D2可能是NA。

  1. 如果D1 = "Yes"D2NA,那么D3应保持NA
  2. 如果D1 = "NEVER",则D2始终为NAD3应为0
  3. 这是我的尝试:

    library(plyr)
    
    data$D3 <- revalue(data$D2, c(
    "0-15 MINUTES" = "7.5",
    "15-30 MINUTES" = "22.5",
    "30-60 MINUTES" = "45")) //this part works perfectly fine
    

    但是,由于NA0而尝试将D1转换为"NEVER"时遇到以下错误:

    data$D3 [data$D1 == "NEVER"] <- 0
    
    Warning message:
    In `[<-.factor`(`*tmp*`, data$D1 == "NEVER", value = c(2L, 2L, 3L,  :
    invalid factor level, NA generated
    

2 个答案:

答案 0 :(得分:0)

x%>%extract(D2,c("y","n"),"(\\d+)-(\\d+)")%>%
    mutate(D3=(as.numeric(y)+as.numeric(n))/2)
     D1    y    n   D3
1   Yes    0   15  7.5
2   Yes   15   30 22.5
3   Yes   30   60 45.0
4   Yes <NA> <NA>   NA
5 NEVER <NA> <NA>   NA

答案 1 :(得分:0)

这个怎么样:

sites/all/modules