首页 文章

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

提问于
浏览
0

我有一个名为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 回答

  • 1

    要创建2个向量:

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

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

  • 0

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

    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
    kip <- subset(ann, Result == 'kip')[,"Exp"]
    min <- subset(ann, Result == 'min')[,"Exp"]
    

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

相关问题