首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据帧行转换为新的数据帧列R

将数据帧行转换为新的数据帧列R
EN

Stack Overflow用户
提问于 2017-09-24 17:02:49
回答 2查看 72关注 0票数 0

我有一个数据框架,cul7_expr,有一行和22列。我想要创建一个新的数据框架,其中一个列包含来自cul7_expr的所有数值,另一个列包含所有列名(TCGA.BC.)。新的数据框架将有2列22行。但是,当我试图获取cul7_expr行时,会弹出一个警告,数据帧为空。

样本数据(cul7_expr):

代码语言:javascript
复制
df <- structure(list(TCGA.BC.A10Q.11A=819.3685,TCGA.BC.A10Q.01A=2757.486, 
TCGA.DD.A1EB.11A=698.5818,TCGA.DD.A1EB.01A=1625.094,TCGA.DD.A1EG.11A=409.9332,
TCGA.DD.A1EG.01A=2221.012,TCGA.DD.A1EH.11A=391.0916,TCGA.DD.A1EH.01A=2122.782, 
TCGA.DD.A1EI.11A=717.2073,TCGA.DD.A1EI.01A=768.7468,TCGA.DD.A3A6.11A=464.6395,
TCGA.DD.A3A6.01A=1175.928,TCGA.DD.A3A8.11A=934.9738,TCGA.DD.A3A8.01A=931.8955,
TCGA.ES.A2HT.11A=599.736,TCGA.ES.A2HT.01A=894.8324,TCGA.FV.A23B.11A=970.1805,
TCGA.FV.A23B.01A=3018.075,TCGA.FV.A3I0.11A=337.222,TCGA.FV.A3I0.01A=3895.477,
TCGA.FV.A3R2.11A=912.8499,TCGA.FV.A3R2.01A=2226.921), 
.Names=c("TCGA.BC.A10Q.11A","TCGA.BC.A10Q.01A","TCGA.DD.A1EB.11A",
"TCGA.DD.A1EB.01A","TCGA.DD.A1EG.11A","TCGA.DD.A1EG.01A","TCGA.DD.A1EH.11A",
"TCGA.DD.A1EH.01A","TCGA.DD.A1EI.11A","TCGA.DD.A1EI.01A","TCGA.DD.A3A6.11A", 
"TCGA.DD.A3A6.01A","TCGA.DD.A3A8.11A","TCGA.DD.A3A8.01A","TCGA.ES.A2HT.11A", 
"TCGA.ES.A2HT.01A","TCGA.FV.A23B.11A","TCGA.FV.A23B.01A","TCGA.FV.A3I0.11A",
"TCGA.FV.A3I0.01A","TCGA.FV.A3R2.11A","TCGA.FV.A3R2.01A"),row.names = c(NA, -1L), 
class = c("data.table","data.frame"))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-24 17:58:49

尝试熔融函数。为了在未来有所帮助,这被称为将数据从宽格式更改为长格式。

代码语言:javascript
复制
require(data.table)
melt(df,measure.vars=1:22)

输出:

代码语言:javascript
复制
            variable     value
 1: TCGA.BC.A10Q.11A  819.3685
 2: TCGA.BC.A10Q.01A 2757.4860
 3: TCGA.DD.A1EB.11A  698.5818
 4: TCGA.DD.A1EB.01A 1625.0940
 5: TCGA.DD.A1EG.11A  409.9332
 6: TCGA.DD.A1EG.01A 2221.0120
 7: TCGA.DD.A1EH.11A  391.0916
 8: TCGA.DD.A1EH.01A 2122.7820
 9: TCGA.DD.A1EI.11A  717.2073
10: TCGA.DD.A1EI.01A  768.7468
11: TCGA.DD.A3A6.11A  464.6395
12: TCGA.DD.A3A6.01A 1175.9280
13: TCGA.DD.A3A8.11A  934.9738
14: TCGA.DD.A3A8.01A  931.8955
15: TCGA.ES.A2HT.11A  599.7360
16: TCGA.ES.A2HT.01A  894.8324
17: TCGA.FV.A23B.11A  970.1805
18: TCGA.FV.A23B.01A 3018.0750
19: TCGA.FV.A3I0.11A  337.2220
20: TCGA.FV.A3I0.01A 3895.4770
21: TCGA.FV.A3R2.11A  912.8499
22: TCGA.FV.A3R2.01A 2226.9210
票数 1
EN

Stack Overflow用户

发布于 2017-09-24 18:23:36

如果我正确地理解了您想要的内容,您需要获得转置和列名,然后从它们生成一个数据框架。

代码语言:javascript
复制
# set up data
x <- data.frame(1, 2, 3, 4)
names <- c("A", "B",  "C", "D")
colnames(x) <- names

#convert
names <- colnames(x) 
data.frame(t(x), names)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46392611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档