【问题标题】:How to sort a vector with multiple sets of data in each row?如何对每行包含多组数据的向量进行排序?
【发布时间】:2019-05-25 22:30:23
【问题描述】:

我对 R 和编码非常陌生。 试图整理我通过以下方式获得的一组数据:

filename = read.delim("UA0001.dat", header = FALSE, skip=16)

我得到的是一个一列多行的矩阵,其中每一列有 8 个不同的数据点。

V1

1-3.39 3.11 4.361 3.35 3.76 3.66 3.44 3.72
2-3.13 3.35 3.01 3.05 2.73 2.90 2.73 2.31
.
.
.

如何将所有这些分开,这样我就可以拥有一个包含一列的矩阵,其中每个数据点都放置在单独的行中?

V1

1-3.39
2-3.11
3-4.36 
4-3.35
5-3.76
.
.
.

【问题讨论】:

  • 原始数据在不同的行中用“ ”和“ ”分隔。有什么方法可以在读取数据时输入两个不同的分隔参数?
  • read.delim("UA0001.dat", header = FALSE, skip=16, sep = " ") 应该为每列提供一个值。

标签: r read-data


【解决方案1】:

您可以通过转置并将其分解为向量并使用ncol = 1将其转换回矩阵来对其进行重组

matrix(c(t(mat)), ncol = 1)


#       [,1]
# [1,] 3.390
# [2,] 3.110
# [3,] 4.361
# [4,] 3.350
# [5,] 3.760
# [6,] 3.660
# [7,] 3.440
# [8,] 3.720
# [9,] 3.130
#[10,] 3.350
#[11,] 3.010
#[12,] 3.050
#[13,] 2.730
#[14,] 2.900
#[15,] 2.730
#[16,] 2.310

数据

mat <-matrix(c(3.39, 3.11, 4.361, 3.35, 3.76, 3.66, 3.44, 3.72,
 3.13 ,3.35, 3.01, 3.05, 2.73, 2.90, 2.73, 2.31), byrow = TRUE, nrow = 2)

【讨论】:

    【解决方案2】:

    这是unmatrix 来自gdata 的选项

    library(gdata)
    matrix(unmatrix(mat, byrow = TRUE))
    #      [,1]
    # [1,] 3.390
    # [2,] 3.110
    # [3,] 4.361
    # [4,] 3.350
    # [5,] 3.760
    # [6,] 3.660
    # [7,] 3.440
    # [8,] 3.720
    # [9,] 3.130
    #[10,] 3.350
    #[11,] 3.010
    #[12,] 3.050
    #[13,] 2.730
    #[14,] 2.900
    #[15,] 2.730
    #[16,] 2.310
    

    aperm

    matrix(aperm(mat, c(2, 1)))
    

    数据

    mat <-matrix(c(3.39, 3.11, 4.361, 3.35, 3.76, 3.66, 3.44, 3.72,
     3.13 ,3.35, 3.01, 3.05, 2.73, 2.90, 2.73, 2.31), byrow = TRUE, nrow = 2)
    

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 2020-01-24
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多