2017-08-03 60 views
-2

我有一個變量sleptim,其中包含睡眠時間從2小時到19小時不等。 如果睡眠的小時數爲< 6,我想sleptim1 var。採取新的值「低於正常」 如果小時數大於9,我想sleptim1 var。取新值「高於正常」 否則「正常」 但新分類變量的結果運行不正常。IF聲明不起作用 - R

請幫助

for (i in 500: 1500) 
{ 
    if(question4$sleptim1[i]<6) 
    {question4$sleptim1[i] <- "Below Normal"} 


    else if(question4$sleptim1[i]>9) 
    {question4$sleptim1[i] <- "Above Normal"} 


    else 
    {question4$sleptim1[i] <- "Normal"} 
} 
+1

你是什麼意思「新分類變量的結果運行不正常」? –

+3

看'cut' - 使用你的循環會容易得多,速度也更快。 –

+4

在數據框中,列的類只有一種類型。在你的例子中,你試圖將一列整數轉換爲一串字符串。我建議創建一個新的列來存儲所需的結果。 – Dave2e

回答

1

我不推薦這種循環,但這一結果似乎是你想要的。而不是覆蓋question4$sleptim1你必須創建新的列question4$sleptim1_Wanted並在那裏存儲你的結果。

question4$sleptim1_Wanted <- NA 

for (i in 500: 1500) 

{ 
    if(question4$sleptim1[i]<6) 
    {question4$sleptim1_Wanted[i] <- "Below Normal"} 


    else if(question4$sleptim1[i]>9) 
    {question4$sleptim1_Wanted[i] <- "Above Normal"} 


    else 
    {question4$sleptim1_Wanted[i] <- "Normal"} 
} 
+0

@RofaidaGoda爲您解決了這個問題嗎?如果是這樣,請你接受答案 – PoGibas