我希望阅读包含矩阵的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 :(得分: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
将行名称转换为列。