我想在以下数据框中将变量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。
D1 = "Yes"
和D2
为NA
,那么D3
应保持NA
D1 = "NEVER"
,则D2
始终为NA
而D3
应为0
。这是我的尝试:
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
但是,由于NA
为0
而尝试将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
答案 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