按字符串子集数据

时间:2012-08-15 20:12:37

标签: r dataframe subset

假设我有一个包含7个变量的数据框。我想自动根据一列的内容对数据框进行子集化。该列是Department,有17个不同的值。我希望R查看“Dept”列并为包含所有其他行的每个Dept创建一个新的数据框。这相当于Minitab中的“Split Worksheet”。现在,我必须运行子命令17次,为每个命令创建一个数据帧。 R可以根据列内容自动执行此操作吗?

最好的,谢谢!

1 个答案:

答案 0 :(得分:5)

out<-split(df,df$Dept)

out[[1]]

#etc访问数据帧

out$Dept1

给出一个具体的例子

df<-data.frame(Dept=c('a','a','b','b','c','d','d'),acs=c(111,112,222,223,333,444,445))
out<-split(df,df$Dept)
out
> out
$a
  Dept acs
1    a 111
2    a 112

$b
  Dept acs
3    b 222
4    b 223

$c
  Dept acs
5    c 333

$d
  Dept acs
6    d 444
7    d 445

dept.names<-names(out)

> dept.names[1]
[1] "a"

> out[[dept.names[1]]] # dataframe for department 1
  Dept acs
1    a 111
2    a 112

> out[[dept.names[2]]] # dataframe for department 2
  Dept acs
3    b 222
4    b 223


> is.data.frame(out[[dept.names[2]]])
[1] TRUE