我在数据框中有一列数据
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
如果温度大于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}
但是我无法继续使用它来创建一个新列。
答案 0 :(得分:7)
你过分思考问题。 TRUE
和FALSE
可以使用1
分别强制为0
和as.numeric
。
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
答案 1 :(得分:6)
你也可以使用ifelse
向量化if-else函数
mydata$NewTemp <- ifelse(mydata$Temp>0, 1, 0)