2014-06-21 61 views
0

我有一個大數據表(大約20,000行)。其中一列包含從1到6的整數。在data.table中使用gsub()

我也有一個汽車模型(6模型)的字符向量。

我試圖與相應車型來取代整數。(僅2在這個例子中)

gsub("1",paste0(labels[1]),Models) 
gsub("2",paste0(labels[2]),Models) 
... 

「模型」是一個列的名稱。

labels <- c("Altima","Maxima") 

與它爭取12+小時GSUB()不工作後(

樣本數據:
MYDATA < -data.table(複製(1,樣品(1:6, 10000,聲望= TRUE))) 標籤< -C( 「Altima的」, 「最大值」, 「SENTRA」, 「是」, 「GS」, 「LS」)

+0

您能顯示一些數據嗎?幾乎可以肯定有更好的方法,例如「匹配」,「或」合併。 – Justin

+0

@Justin我不知道如何在這裏顯示我的數據。但我希望這裏有更好的解釋。模型是一個數據表,由單列和20000行組成。標籤是總共有6個名字的字符矢量。模型數據表中的值是整數1到6. –

回答

2

我不認爲你需要gsub這裏,你所描述的是一個因素變量,

如果你的數據是

mydata <- data.table(replicate(1,sample(1:6,1000,rep=TRUE))) 
models <- c("altima","maxima","sentra","is","gs","ls") 

你可以只是做

mydata[[1]] <- factor(mydata[[1]], levels=seq_along(models), labels=models) 

如果你真的想要一個字符,而不是一個因素,那麼

mydata[[1]] <- models[ mydata[[1]] ] 

也將這樣的伎倆。這兩個要求數字是連續的,並從1開始。

+0

我不確定這是否正常工作 –

+0

嗯,它對我的​​測試數據有效。如果你的數據有點不同,也許你可以在原始問題中發佈一些樣本數據。否則,我不知道如何迴應您的評論。 – MrFlick

+0

mydata <-data.table(replicate(1,sample(1:6,10000,rep = TRUE))); models <-c(「altima」,「maxima」,「sentra」,「is」,「gs」,「ls」) –

0

您可以嘗試以下方式使用factor() - 在您的測試數據上爲我工作。假設mydata中第一列的名稱是V1(默認值)

mydata$V1 <- factor(mydata$V1, labels=models)