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”,没有默认值”错误

谢谢

4

3 回答 3

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上面的部分。

于 2013-08-01T02:51:32.480 回答
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

这是你想要的吗?

于 2013-08-01T02:53:05.623 回答
0
kip <- subset(ann, Result == 'kip')[,"Exp"]
min <- subset(ann, Result == 'min')[,"Exp"]

试试上面的。这基本上从 kip 或 min 的子集中索引感兴趣的列。

于 2013-09-11T02:54:38.407 回答