【发布时间】:2017-08-02 18:03:42
【问题描述】:
在使用 melt() 函数从宽格式转换为长格式后,我正在尝试将分类变量转换为 R 中的一个因子。但是,当我运行因子函数并输入级别和标签时,我得到一个表格:
有人知道为什么会这样吗?
law <- read.csv("lawyers_class_new.csv")
library(reshape2)
law <- melt(law, id.vars = c("Subj"), measure.vars = c("lawyer", "neutral", "engineer", "neutral_urb", "neutral_rur"))
law <- law[order(law$Subj),]
law <- within(law,
Subj <- factor(Subj),
variable <- factor(variable)
)
law$variable<- ordered(law$variable,levels=c(1,2,3,4,5),labels=c("lawyer","neutral",
"engineer","neutral_urb","neutral_rur"))
Output:
law$variable
[1] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[18] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[35] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[52] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[69] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[86] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[103] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[120] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
[137] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
融合数据框架:
**Subj Cond variable value**
1 2 lawyer 3
1 3 neutral 1
1 1 engineer 3.5
1 5 neutral_urb 3
1 4 neutral_rur 3.5
2 2 lawyer 1
2 3 neutral 3.5
2 1 engineer 4.5
2 5 neutral_urb 2
2 4 neutral_rur 3.5
原始数据框:
Subj lawyer neutral engineer neutral_urb neutral_rur
1 3 1 3.5 3 3.5
2 1 3.5 4.5 2 3.5
【问题讨论】:
-
请做一个可重现的例子。我们无权访问lawers_class_new.csv。 stackoverflow.com/questions/5963269/…
-
在第二次转换为有序因子时,水平似乎不是
1:5。级别参数应该是因子级别的显示方式,并且标签只有在您想将它们更改为其他内容时才是可选的。 -
另外,我不知道你的目标,但许多人错误地认为有序因子对于按特定顺序设置级别是必要的,例如,用于绘图。事实并非如此。
ordered因素的唯一原因是建模时使用的对比。 -
@P Lapointe:抱歉,我不知道该怎么做?我无权访问服务器来发布数据集。
-
@Gregor:我正在尝试将级别转换为数值。我不想要非数字值。在我弄清楚这一点之后,我将对这些数据做一个线性混合模型,这需要我有对比。当我尝试按原样对“变量”进行对比时,我收到一条错误消息。所以我的想法是需要将“变量”转换为数字因子才能进行分析。这是一个不正确的假设吗?
标签: r statistics statsmodels