2014-07-15 134 views
-2

我想预测一个数值变量。我有几个因素。对于所有这些因素,我有一个数字等值。现在,将这个数值等同于该因子并将其用于预测是完美的。这可能吗? 如果这是不可能的,我想我将需要用它们的数值替换这些因素。最好的办法是什么?给出因子数值[R]

一个例子:

df = data.frame(f=c("a","b","a","c"),v=c(2,4,2,6)) 
lookup = data.frame(name=c("a","b","c"),v=c(1,2,3)) 

我想获得

df2 = data.frame(f=c(1,2,1,3),v=c(2,4,2,6)) 
cor(df2$f,df2$v) # will be 1 
+0

你的意思是,该因素的数值等同?因素是类别。当你说预测时,你是什么意思? – TARehman

+0

R将因子视为分类变量和数值作为连续变量。这两种类型的变量往往有不同的统计方法与它们相关联,并且模型的解释因变量类型而异。你真的应该首先决定什么类型的分析适合你的数据。 – MrFlick

+0

我增加了一个例子,使其更加清晰。这些字母就是我所得到的,查找表中的数字是我之前计算出的一些平均值,现在可以使用。 – nik

回答

1

或者

df2 <- merge(df, lookup, by.x = "f", by.y = "name") 
cor(df2[, 2], df2[, 3]) 

或者,如果你的数据集是大

library(data.table) 
setkey(setDT(df), f) 
setkey(setDT(lookup), name) 
df2 <- df[lookup] 
cor(df2[, 2, with = F], df2[, 3, with = F]) 
+0

谢谢,合并完美的工作。 – nik

0

这是否帮助?

cor(lookup$v[match(df$f,lookup$name)],df$v) 
+0

谢谢,这也适用,但前提是只有一列需要识别。我需要更多(即使这是不包括在我的例子) – nik