转换数据矩阵,同时保持数值

时间:2015-07-05 01:23:51

标签: r matrix transpose

我有一组像这样的数据

  GSM482075 GSM482076 GSM482077 GSM482078 GSM482079 GSM482080 GSM482081 GSM482082
1   8.79703   8.04291   7.53674   9.94527   8.38775   8.02375   11.1607   10.5481
2   5.66556   6.42794   6.62527   6.19131   5.34138   5.69543    5.9252   5.55675

我想转置并将列转换为行和行,但是当我使用t()时,它会将数值转换为字符串。

 1         2        
GSM482075 "8.79703" "5.66556"
GSM482076 "8.04291" "6.42794"
GSM482077 "7.53674" "6.62527"
GSM482078 "9.94527" "6.19131"
GSM482079 "8.38775" "5.34138"
GSM482080 "8.02375" "5.69543"
GSM482081 "11.1607" "5.9252" 
GSM482082 "10.5481" "5.55675"

我环顾四周,但我还没有找到一种简单的方法来保持数字的数字。我正在考虑剥离标签,但我没有看到任何关于如何做到这一点的答案,除非人们告诉别人不要。有什么建议?感谢

编辑:str(geomatrixsub)第一个对象的结果显示

 'data.frame':  2 obs. of  8 variables:
$ GSM482075: chr  "8.79703" "5.66556"
$ GSM482076: chr  "8.04291" "6.42794"
$ GSM482077: chr  "7.53674" "6.62527"
$ GSM482078: chr  "9.94527" "6.19131"
$ GSM482079: chr  "8.38775" "5.34138"
$ GSM482080: chr  "8.02375" "5.69543"
$ GSM482081: chr  "11.1607" "5.9252"
$ GSM482082: chr  "10.5481" "5.55675"
使用

    t(geomatrixsub [1:2,])

      1         2        
GSM482075 "8.79703" "5.66556"
GSM482076 "8.04291" "6.42794"
GSM482077 "7.53674" "6.62527"
GSM482078 "9.94527" "6.19131"
GSM482079 "8.38775" "5.34138"
GSM482080 "8.02375" "5.69543"
GSM482081 "11.1607" "5.9252" 
GSM482082 "10.5481" "5.55675"

2 个答案:

答案 0 :(得分:1)

我知道这里有几个解决方案reshape2tidyr。我尝试过基础R解决方案。这是它:

 t(dat[1:2, ])
                 1       2
GSM482075  8.79703 5.66556
GSM482076  8.04291 6.42794
GSM482077  7.53674 6.62527
GSM482078  9.94527 6.19131
GSM482079  8.38775 5.34138
GSM482080  8.02375 5.69543
GSM482081 11.16070 5.92520
GSM482082 10.54810 5.55675

我已经使用了提供的数据,用R读取这个代码,这个代码有一个数字数据框但有矩阵我觉得它也应该有效:

dat <- read.table(text = " GSM482075 GSM482076 GSM482077 GSM482078 GSM482079 GSM482080 GSM482081 GSM482082
1   8.79703   8.04291   7.53674   9.94527   8.38775   8.02375   11.1607   10.5481
                  2   5.66556   6.42794   6.62527   6.19131   5.34138   5.69543    5.9252   5.55675")

答案 1 :(得分:0)

我知道这是一篇旧帖子,但我遇到了同样的问题,我找到了另一种方法。

dat <- read.table(text = " GSM482075 GSM482076 GSM482077 GSM482078 GSM482079 GSM482080 GSM482081 GSM482082
1   8.79703   8.04291   7.53674   9.94527   8.38775   8.02375   11.1607   10.5481
                  2   5.66556   6.42794   6.62527   6.19131   5.34138   5.69543    5.9252   5.55675")

dat_t = as.data.frame(x = t(dat), stringsAsFactors = FALSE)


> dat_t
                 1       2
GSM482075  8.79703 5.66556
GSM482076  8.04291 6.42794
GSM482077  7.53674 6.62527
GSM482078  9.94527 6.19131
GSM482079  8.38775 5.34138
GSM482080  8.02375 5.69543
GSM482081 11.16070 5.92520
GSM482082 10.54810 5.55675

原始来源在这里:https://community.rstudio.com/t/how-to-transpose-data-frame-and-retain-variable-data-types/45843