2013-09-24 55 views
0

這是一個如此簡單的探測問題,但我無法找到解決問題的方法。我曾經爲了創建一個表從以前的data.frame來組織我的數據有所不同(見下文)R:創建表並將其保存到數據框

科dataframe1以下

Score Pred 
0.966 Noise 
0.95 Noise 
0.964 Noise 
0.924 Call 
0.838 Noise 
0.982 Call 
0.934 Noise 

使用組織我的數據插入表如下:

dataframe1_sorted <- with(dataframe1, table(Score, Pred)) 

這將創建一個表格,其中包含以下內容:我要計算每個Score類別中有多少個「Call」和多少個「Noise」。

Score Pred Call Noise 
0   0 402  0 
0.002  0 207  0 
0.004  0 120  0 
0.006  0 83  0 
0.008  0 59  0 
0.01  0 48  0 

現在,當我嘗試保存使用DF < -data.frame(dataframe1)這個表,它改變了列,我得到標題「得分,強的鬆,頻率」。我想按照原樣將表保存到數據框中。

我該怎麼辦?

回答

2

嘗試unclassing表:

df<-data.frame(unclass(dataframe1)) 

我認爲這是你在找什麼。

+0

有多奇怪,因爲我曾經嘗試過讓我的桌子蒙上面,最後我以廢話結束。它這次雖然有用,謝謝! – Mengll

1

我已經收到了同樣的問題,做到了這一點:

tab <- with(dat, table(Score, Pred)) 
class(tab) <- 'matrix' 
data.frame(tab)  

編輯:使用的'array'代替'matrix'也適用,而應擴展到更高的二維表格。

+0

這工作正常,謝謝! :)據我所知,你首先將表格分類爲'矩陣',然後將其保存爲data.frame? – Mengll

+0

@Mengll是的。最初,我嘗試過'as.matrix',但是這並沒有擺脫'table'類。 'unclass'它(作爲@mrip的提議)也會產生一個矩陣;檢查'類(unclass(tab))' – Frank

1

基準R之外的一種替代方法是使用reshape2包中的dcast。這是一個data.frame的輸出,所以你不必重新保存它。我喜歡這件事的一件事是,你可以爲每個列獲取名稱。

require(reshape2) 
(df = dcast(dataframe1, Score ~ Pred, fun.aggregate = length)) 
+0

這太棒了!我找不到可能會有data.frame輸出的代碼,所以我繞着這條路走了一圈。我會檢查一下整形包。 – Mengll

相關問題