2016-05-14 45 views
0

所以,我最近開始與R研究我感興趣的研究,並試圖創建一個包含數據幀行的多維數組。R包含數據幀行的二維數組

我有一個很大的數據框,包含許多列,可以是數字或字符串。爲了簡單起見,讓我們使用3列: thread_id:介於1和10100之間的整數。 user_id:給予用戶的整數。 post_name:一個字符串,給我們的職位標題

我想創建一個數據結構,這最好是一個二維數組,其中第一個維度我們有thread_id,第二個我們有一個行來自數據框。

所以,作爲回報,爲

DataSet[1][1], I'd get thread_id: 1, user_id: 100, post_name: "some name 1" 
DataSet[1][2], I'd get thread_id: 1, user_id: 101, post_name: "some name 2" 
DataSet[5][10], I'd get thread_id: 5, user_id: 900, post_name: "some name 3" 

這是可能的R中做什麼?我只有以前的Java經驗,並且可以使用Object的數組來解決這個問題。

感謝您的幫助!

+0

歡迎SO。首先你應該閱讀[這裏](http://stackoverflow.com/help/how-to-ask)關於如何提出一個好問題;有一個很好的問題有更好的變化需要解決,你需要得到幫助。另一方面閱讀[this](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)也不錯。它解釋瞭如何在R中創建一個可重現的示例。幫助用戶通過爲您的數據提供期望的輸出和您迄今爲止嘗試的內容來幫助您。 – SabDeM

回答

0

比如說,如果thread_id單承擔了價值1至5,你可以使用:

mylist <- list() 
for(i in 1:5) 
    mylist[[i]] <- myData[thread_id==i,] 

你當然可以使用max(myData$thread_id)而不是5 ...

0

這裏是你的選擇。

假設:df是一個data.frame

convert.to.str <- function(df){ 
    df_col <- names(df) 
    val <- unlist(df) 

    ans <- paste(df_col,val,sep=': ') 

    final_ans <- paste(ans,collapse=', ') 
} 

int_ans <- data.frame(thread_id = df$thread_id, ans = apply(df,1,convert.to.str), nrow2=1:nrow(df)) 

library(reshape2) 

int_ans2 <- dcast(int_ans,thread_id ~ nrow2,value.var='ans') 

DataSet <- int_ans2[2:ncol(int_ans2)] 

dimnames(DataSet)[[1]] <- int_ans2$thread_id 
+0

嘿,謝謝分享!似乎完全適用於int_ans,雖然它只在int_ans2(99次:D)中填充了13號。 任何想法爲什麼會發生這種情況?我所做的只是將變量更改爲我的程序中的名稱。 –

+0

@M.Küsz您可以分享您修改的代碼嗎? –

+0

Ofcourse,在這裏,你去! http://pastebin.com/FZc0gJq9謝謝! –