2014-07-15 29 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