1

列を説明するカテゴリ行を含むデータ フレームがある場合、それらの値に基づいてどのようにサブセット化できますか? ここに私のデータがあります:

     name1 name2 name3
cond   trt  ctrl  ctrl
hour     0     3     0
A        1     1     1
B        2     2     2
C        3     3     3
D        4     4     4
E        5     5     5
F        6     1     6
G        7     2     7
H        8     3     8
I        9     4     9
J       10     5    10

次の行で再作成します。

A <- structure(list(name1 = c("trt", "0", "1", "2", "3", "4", "5", 
"6", "7", "8", "9", "10"), name2 = c("ctrl", "3", "1", "2", "3", 
"4", "5", "1", "2", "3", "4", "5"), name3 = c("ctrl", "0", "1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10")), .Names = c("name1", 
"name2", "name3"), row.names = c("cond", "hour", "A", "B", "C", 
"D", "E", "F", "G", "H", "I", "J"), class = "data.frame")

これが私が試みたものです:

subset(A, ( A[1,] == 'trt' & A[2,] == 0 ))

私の説明のつかない結果。これはなぜですか?:

     name1 name2 name3
cond   trt  ctrl  ctrl
B        2     2     2
E        5     5     5
H        8     3     8

私が欲しいもの:

     name1 
cond   trt  
hour     0  
A        1  
B        2  
C        3 
D        4  
E        5  
F        6  
G        7  
H        8  
I        9 
J       10 

ありがとうございました。「条件」と「時間」のカテゴリが要因である場合、これはより簡単になる可能性があります。または、データが「溶けた」場合。私はどんな提案にもオープンです。

4

2 に答える 2

3

サブセットを使用する必要はありません。ただ行う:

A <- A[,1,drop=FALSE]

または、列番号をハードコーディングしたくない場合:

A[,A[1,] == 'trt' & A[2,] == 0,drop = FALSE]
于 2013-02-26T16:47:18.580 に答える
1

による直接サブセット化に加えて、の select 引数を[ ]使用して列を選択することもできますsubset

> subset(A, TRUE, select=( A[1,] == 'ctrl' & A[2,] == 3 ))
     name2
cond  ctrl
hour     3
A        1
B        2
C        3
D        4
E        5
F        1
G        2
H        3
I        4
J        5
于 2013-02-26T16:57:33.613 に答える