r - 将矩阵转换为 r 中的数据帧

标签 r dataframe matrix dplyr

我正在尝试将矩阵转换为数据帧,并在矩阵中使用列名和行名以及数据帧中的变量。
这是样本

sample = matrix(c(1,NA,NA,2,NA,3,NA,NA,5,NA,NA,6,NA,NA,NA,NA,8,NA,3,1),ncol = 4)
colnames(sample) = letters[1:4]
row.names(sample) = letters[22:26]

我的数据集有很多 NA所以我试图删除所有 NA在数据框中。

所以这是我想要的输出,
 data.frame(col = c("v","v","w","w","y","y","y","z"),
           row = c("a","b","c","c","a","b","d","d"), 
           value = c(1,3,6,8,2,5,3,1))

最佳答案

使用 melt从 reshape2 包进行整形,然后清除 NA .最后,做一些格式化的东西来获得你想要的输出(排序、设置列名......)。

> library(reshape2)
> df <- na.omit(melt(sample))  # reshaping
> df <- df[order(df$Var1), ]   # ordering
> colnames(df) <- c("col", "row", "value") # setting colnames
> df                           # getting desired output
   col row value
1    v   a     1
6    v   b     3
12   w   c     6
17   w   d     8
4    y   a     2
9    y   b     5
19   y   d     3
20   z   d     1

使用 dplyr 和 magrittr
> library(magrittr)
> library(dplyr)
> sample %>%  melt %>% 
    na.omit %>% 
    arrange(., Var1) %>%
    setNames(c('col', 'row', 'value'))

 col row value
1   v   a     1
2   v   b     3
3   w   c     6
4   w   d     8
5   y   a     2
6   y   b     5
7   y   d     3
8   z   d     1

关于r - 将矩阵转换为 r 中的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025814/

相关文章:

r - 直接在 ggplot 中设置直方图的 bin 数量

python - 使用 pandas apply with dates and dates shifted

python - 如何根据另一个数据框中的变量从数据框中选择列

r - 如何在 R 中创建用户定义的 S4 类的数据框

重命名数据框中的观察结果

r - R中的随机森林对训练数据的大小有限制吗?

python - 我们如何才能在 plotly boxplot 背后获得不同的统计数据?

R 内存管理/无法分配大小为 n Mb 的向量

r - 为什么当 data.frame 没有时,data.table 将矩阵回收到单个向量中?

c++ - 为什么在与GLSL中的矩阵相乘后z坐标会翻转 - OpenGL