2017-08-03 58 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