如果我的数据框中包含描述列的分类行,那么如何根据这些值对其进行子集化?这是我的数据:
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
谢谢。如果&#39; cond&#39;的类别可能会更容易。和&#39;小时&#39;是因素。或者,如果数据被“融化”了。我对任何建议持开放态度。
答案 0 :(得分:3)
不需要使用子集。只是做:
A <- A[,1,drop=FALSE]
或者如果您不想对列号进行硬编码:
A[,A[1,] == 'trt' & A[2,] == 0,drop = FALSE]
答案 1 :(得分:1)
除了使用[ ]
进行直接子集外,您还可以使用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