【问题标题】:Dataframe column to matrix by two other columns数据框列到另外两列的矩阵
【发布时间】:2019-03-01 14:22:51
【问题描述】:

我有一个数据框

df<-data.frame(i=rep(1:3,3),j=sort(rep(1:3,3)),v=sample(1:9,9))
df
  i j v
1 1 1 3
2 2 1 1
3 3 1 9
4 1 2 8
5 2 2 5
6 3 2 4
7 1 3 7
8 2 3 2
9 3 3 6

我想转换成矩阵 M 这样

M[i,j]<-df$v[which(df$i==i & df$j==j)] 

有没有简单的方法可以做到这一点?

【问题讨论】:

  • 在使用sample等函数时请使用set.seed,以确保重现性

标签: r dataframe matrix


【解决方案1】:

根据你的描述,你可以这样做,

matrix(df$v, ncol = max(df$j))
#      [,1] [,2] [,3]
#[1,]    2    4    7
#[2,]    3    1    5
#[3,]    8    6    9

使用的数据:

dput(df)
structure(list(i = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), j = c(1L, 
1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L), v = c(2L, 3L, 8L, 4L, 1L, 6L, 
7L, 5L, 9L)), class = "data.frame", row.names = c(NA, -9L))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-15
    • 2015-01-15
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多