如何从数据框中提取观察值并创建一个显示观察值,列名和行名的表?

时间:2019-02-18 20:16:01

标签: r dataframe

我正在尝试从数据框中提取观察值,并创建一个新的数据框,以在一个列中显示观察值,在另一列中显示相应的列,并在另一列中显示相应的行。然后消除其中包含NA的值。当前df如下:

Flask     Well 1      Well 2
  A            NA         NA
  B           2Mg       Control
  C           3Mg       Control
  D           4Mg       Control
  E            NA         NA

我尝试使用!is.na(),但不会消除这些值并在当前状态下构造df。 目前,我已经使用chart_df %>% group_by(row.names(chart_df))对其进行了组织,但是并没有正确地组织它。

我想要的是一个看起来像这样的df:

Condition   Column   Row
NA          Well1      A
2Mg         Well1      B
3Mg         Well1      C
4Mg         Well1      D

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找melt

# the data
my_df <- read.table(text = "Flask     Well_1      Well_2
                     A            NA         NA
                     B           2Mg       Control
                     C           3Mg       Control
                     D           4Mg       Control
                     E            NA         NA", header = TRUE)

library(reshape2)
melt(my_df , id.vars = 'Flask') %>% 
  setNames(c('Row', 'Column', 'Condition')) %>% 
  na.omit()

更新:当id.varsFlask列)为rownames

# the data
my_df <- my_df[c('Well_1',  'Well_2')] %>% 
  as.data.frame(row.names = my_df$Flask) 

my_df %>% 
  as.matrix() %>% melt() %>%  na.omit()