我想根據元數據中的兩個條件製作我的數據的子集。基於元數據表從data.frame/data.table子集的快速方法
data= data.frame (w=c(rep ("a", 10),rep("b", 10), rep ("c", 10)), y=(rep(c(1,2,3),10)), v=rnorm (30))
metadata = data.frame (w=c("b","a",),y= c(1,2))
allY <- data.frame()
mainY <- data.frame()
for (x in 1:length (data [,1])){
allY <- data.frame (data [which (data$w %in% metadata[x,1]),])
mainY <- data.frame (rbind (mainY, allY [which (allY$y %in% metadata[x,2]),]))
}
mainY
問題是數據和元數據都很大,而且這樣做一直需要數小時。當它完成時,我有一個錯誤:
你知道我該怎麼種子的過程,也許使用data.table?
非常感謝!
您發佈的代碼沒有做任何事情('mainY'在最後是空的),使得很難弄清楚你在做什麼。選擇'metadata [x,2]'幾乎肯定不會做你想要的:'x'正在從一個因子轉換爲數字。如果它不是一個因素,那麼它會使用rownames,其中你沒有。 – nograpes
請描述你想要達到的效果並顯示預期的輸出。 – Roland
謝謝你。我已經使用了元數據[,1]而不是元數據[x,1],並排除了for循環,現在我的問題已解決。這很快就做到了。 – AEM