2016-11-13 20 views
0

でこれらの数字である行と数を決定:抽出条件によって、データフレーム内の番号とデータフレームを考える

df=data.frame(co1=c(5,9,6,1,6),co2=c(8,5,4,6,2),co3=c(6,5,4,1,2),co4=c(6,1,5,3,2),co5=c(5,1,2,6,8)) 
rownames(df)=c('row1','row2','row3','row4','row5') 
df 
#  co1 co2 co3 co4 co5 
#row1 5 8 6 6 5 
#row2 9 5 5 1 1 
#row3 6 4 4 5 2 
#row4 1 6 1 3 6 
#row5 6 2 2 2 8 

がどのように値5よりも大きい数字を選択することができますが?そして、どの行と列がこれらの数値であるかを決定する方法は?それは私がこのようなデータフレームを得るのですか、次のとおりです。

# rownames colnames value 
# row1  col2  8 
# row1  col3  6 
# row1  col4  6 
# row2  col1  9 
# row3  col1  6 
# ...  ...  ... 
+0

「which」つまり「i1 <- which(df > 5、arr.ind = TRUE); colnames = colnames(df)[i1 [、2]]、値= df [i1]) 'または'ライブラリ(reshape2);サブセット(メルト(as.matrix(df))、value> 5) ' – akrun

答えて

2

我々は、subset

library(reshape2) 
subset(melt(as.matrix(df)), value>5) 
0

それともtidyverseを好む場合に

library(tidyverse) 
    df %>% 
    rownames_to_column() %>% 
    gather(colname,value,-rowname) %>% 
    filter(value > 5) 

敬具、
meltを使用することができます Hans

関連する問題