2013-11-14 2 views
0

у меня есть столбец данных в кадре данныхСоздать столбец с двоичными данными, основанными на другой колонке

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 1 или 0 на основе состояния, если оно больше 70. Поэтому мне нужен столбец с 1, когда Temp больше 70 и 0, когда он меньше, поэтому я могу сделать регрессию, используя Temp как двоичную переменную.

R примет условие о

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

, но я не могу дальше и использовать его, чтобы создать новый столбец.

Пожалуйста, помогите.

ответ

3

Вы также можете использовать ifelse который векторизованную если-иначе функция

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

Спасибо. Оба они отлично работают. Я новичок, поэтому я ценю помощь. – user2907249

5

Вы слишком задумывались над вещами. 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 
Смежные вопросы