我有一个n乘m data.frame
,其中第1列有感兴趣的信息。我想根据第1列的行中的值来创建子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
谢谢
答案 0 :(得分:1)
使用list
将数据分成data.frames
split
也可以在这里工作,并防止工作空间混乱。 E.g:
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
答案 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])