3

我有一个 by m data.frame,其中第 1 列包含感兴趣的信息。我想data.frame根据第 1 列的一行中的值来创建 sub 。

例子:

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

谢谢你

4

2 回答 2

1

将您的数据分解成一个list使用data.framessplit可以在这里工作,并防止您的工作空间混乱。例如:

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"]]

瞧:

#  P data
#1 S    1
#2 S    1
于 2013-03-21T20:25:29.027 回答
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])
于 2013-03-21T18:20:18.007 回答