2017-09-03 245 views
-4

我正在閱讀包含矩陣的cvs文件,其中每個行/列組合都有特定的速率。見例如:如何從矩陣創建數據框

我想讀出的信息作爲數據幀,其中,我有一個行/列因子與$Year$Age$Rate相關聯的每個值。見例如:

謝謝!

CS

更新:感謝您的反饋,我寫我自己的函數,似乎這樣的伎倆:

matrix2dataframe <- function(rowN,colN,Data) { 
    NRowRep = max(rowN)-min(rowN) 
    NColRep = max(colN)-min(colN) 

    tmp_Name = rep(as.character(Data[rowN[1],colN[1]]),times=NRowRep*NColRep) 
    tmp_Value =  as.numeric(as.matrix(Data[rowN[2]:max(rowN),colN[2]:max(colN)])) 
    tmp_Age =  rep(as.character(as.matrix(Data[rowN[2]:max(rowN),1])),times=NColRep) 
    tmp_DYear =  mapply(rep,x=as.character(as.matrix(Data[rowN[1],2:max(colN)])),times=NRowRep) 
    tmp_DYear = as.character(tmp_DYear) 
    #list(Cancer = tmp_Name,Rate = tmp_Value,Age = tmp_Age,DYear = tmp_DYear) 
    data.frame(Cancer = tmp_Name,Rate = tmp_Value,Age = tmp_Age,DYear =  tmp_DYear) 
} 
+0

請給採樣數據和/或數據的圖像。 – www

+1

您可以爲兩個示例data.frames而不是兩個圖片輸出'dput'。看到這裏如何做出一個很好的問題https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – mt1022

+0

這真的不同於你的其他問題https:// stackoverflow .com/questions/46019182/imports-matrix-csv-data-into-r-how-to-convert-into-dataframe。你有沒有看過任何介紹性的指南,如果可以的話,你可以展示你嘗試過的代碼和卡住的地方。謝謝 – user20650

回答

0

看一看這樣的:

df <- data.frame(age = c("15-99", "15-44"), "one_year" = c(76.3, 92.9), "five_year" = c(60.9, 82.8)) 
df 
    age one_year five_year 
1 15-99  76.3  60.9 
2 15-44  92.9  82.8 

library(tidyr) 
gather(df, year, rate, -age) 
    age  year rate 
1 15-99 one_year 76.3 
2 15-44 one_year 92.9 
3 15-99 five_year 60.9 
4 15-44 five_year 82.8 

如果你真的有一個矩陣開始,你可以使用data.frame()函數將它轉換爲數據幀。看看?data.frame。如果年齡組是rownames,請考慮使用df$age = row.names(df)將行名稱轉換爲列。

2

只需用reshape

melt(df) 

    age variable value 
1 15-99 one_year 76.3 
2 15-44 one_year 92.9 
3 15-99 five_year 60.9 
4 15-44 five_year 82.8