基于R中另一列的行值将数据帧子集化为向量

时间:2013-08-01 02:45:39

标签: r dataframe

我有一个名为ann的数据帧,它有几百行。我只展示了几个。

        Exp     Result
1   gmp_123     kip
2   gmp_345     kip
3   gmp_786     kip
4   gmp_564     min
5   gmp_347     min

基本上我想从Exp列创建两个向量。一个将具有Exp值,其中Result ==“kip”,另一个具有Exp值,其中Result ==“min”。

因此第一个向量的值为gmp_123,gmp_345,gmp_786,第二个向量的值为gmp_564,gmp_347。

我尝试了如下子集方法:

ann.kiu <- subset(ann, select=Exp, subset(Result=="kip"))

但我得到了

  

“subset.default中出错(Result ==”kip“):     参数“subset”缺失,没有默认的“错误

由于

3 个答案:

答案 0 :(得分:2)

创建2个向量:

kip <- subset(ann, subset=(Result == "kip"), select=Exp, drop=TRUE)
min <- subset(ann, subset=(Result == "min"), select=Exp, drop=TRUE)

但听起来你真的想要创建数据框的2个子集,在这种情况下只省略上面的drop=TRUE部分。

答案 1 :(得分:1)

这是一个简单的错字:你只需要添加一个等号:

ann.kiu<-subset(ann, select=Exp, subset=(Result=="kip"))

编辑添加:这是直接从我的R会话中粘贴的:

> Exp=c("gmp_123","gmp_345","gmp_786","gmp_564","gmp_374")
> Result=c(rep("kip",3),rep("min",2))
> ann=data.frame(Exp,Result)
> ann
      Exp Result
1 gmp_123    kip
2 gmp_345    kip
3 gmp_786    kip
4 gmp_564    min
5 gmp_374    min
> ann.kiu<-subset(ann, select=Exp, subset=(Result=="kip"))
> ann.kiu
      Exp
1 gmp_123
2 gmp_345
3 gmp_786

这是你想要的吗?

答案 2 :(得分:0)

kip <- subset(ann, Result == 'kip')[,"Exp"]
min <- subset(ann, Result == 'min')[,"Exp"]

尝试以上方法。这基本上是从kip或min的子集索引感兴趣的列。