如何从矩阵创建数据框

时间:2017-09-03 01:43:40

标签: r csv matrix dataframe

我希望阅读包含矩阵的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)
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

看看这个:

.one {
    background: grey;
    display: inline-block;
    margin: 0 auto;
}
.centered {
    display: flex;
}

如果您确实要开始使用矩阵,可以使用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()。如果年龄组是rownames,请考虑使用?data.frame将行名称转换为列。