从数据框中提取行

3

我有一个n行m列的data.frame,其中第一列包含了我感兴趣的信息。 我想根据第一列中某一行的值创建子data.frame

例如:

P Cat  Q    S... nth Column
S data data data data 
S ...       ...       
A ...
I ...
. ...
. ...
. ...
mth row

现在我想做的是创建一个data.frame,其中列P的值为S,然后一个为A...等等。

我一直在尝试失败的事情,比如:

s <- data.frame(df1$P = S)
s <- data.frame(df1$P [,:5]) <- #In this case the data I want stops at row 5

我希望最终得到类似以下的结果:
s = P Data1 Data2 Data3 Data nth
    S
    S
    ...
    S

谢谢您

2个回答

1
将数据使用 split 分成一个 data.frame 的列表也可以在这里起作用,并且可以防止工作区混乱。例如:
df1 <- data.frame(P=c("S","S","A","I"),data=rep(1,4))
df1

#  P data
#1 S    1
#2 S    1
#3 A    1
#4 I    1

result <- split(df1,df1$P)

#$A
#  P data
#3 A    1
#
#$I
#  P data
#4 I    1
#
#$S
#  P data
#1 S    1
#2 S    1

您可以像这样访问列表的部分内容:
result$S

或者

result[["S"]]

Voila:
#  P data
#1 S    1
#2 S    1

0

改为:

s <- data.frame(df1$P = S)

尝试:

s <- data.frame(df1[df1$P == S,])

或者

s <- data.frame(df1[df1$P == 'S',])

如果你想控制行数,请尝试以下方法:

s <- data.frame(df1[df1$P == 'S',1:5])

非常感谢,第三个是我想要的,它完美地工作了。 - MCP_infiltrator
我认为没有必要将所有这些选择包装在 data.frame(...) 中 - 结果无论如何都会是一个 data.frame - thelatemail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接