我有三列要放入数据框,并将其放入一列。我已使用唯一ID对每列进行了签名。我想要的结果是两列,一列是列ID,一列是这三列值。这些是我的原始数据:
所以我希望结果如下:
1 value
2 value
3 value
1 value
2 value
3 value
所以我做的是:
for (i in 1:nrow(cancer))
+ for (j in 1:ncol(cancer)){
+
+ dtypeID=datatype$dtypeID[datatype$dtype %in% names(cancer)[j]]
+ if (nrow(cancerdata)==0){
+ cancerdata = data.frame(dataID=1,
+ dtypeID=dtypeID,
+ value=cancer[i,j])
+ } else {
+
+ lastdataID = max(cancerdata$dataID)
+ dataID=lastdataID+1
+ newline = data.frame(dataID=dataID,
+ dtypeID=dtypeID,
+ value=cancer[i,j])
+
+ cancerdata=rbind(cancerdata, newline)
+ }
+ }
但它一直让我犯这个错误: data.frame出错(dataID = 1,dtypeID = dtypeID,value = cancer [i,j]): 参数意味着不同的行数:1,0
答案 0 :(得分:1)
看起来你要做的是melt数据。安装reshape2
包并尝试:
library(reshape2)
cancerdata = melt(cancer, id=c("Gene.symbol", "Pathway.title"))
(您可以使用reshape2
安装install.packages("reshape2")
。