在R中,如何返回观察组,而不是观察数量?

时间:2012-10-17 19:32:59

标签: r grouping

我有一个大型数据框,我试图运行for loop,但需要先获取所有不同的观察结果。我目前正在尝试处理的过程是这样的:

  1. 创建观察的列表/矢量/数据框
  2. 使用for loop
  3. 中的每个观察结果

    以下是我如何处理它:

    生成一些数据:

    x <- gl(12,5)
    

    我要找的结果是所有不同观察的列表:

    1 2 3 4 5 6 7 8 9 10 11 12
    

    我可以创建data frame,然后删除数字列,如下所示:

    list <- data.frame(table(x))
    
    list[,2] <- NULL
    
    print(list)
    

    从这个列表/向量/数据框中,我会像for loop那样运行:

    for (i in list) print(i)
    

    必须有一种更有效的方法来获取for loop的列表。有人可以推荐吗?

1 个答案:

答案 0 :(得分:4)

有几个选项包括:

R> unique(x)
 [1] 1  2  3  4  5  6  7  8  9  10 11 12
Levels: 1 2 3 4 5 6 7 8 9 10 11 12
R> levels(x)
 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12"
R> as.numeric(levels(x))
 [1]  1  2  3  4  5  6  7  8  9 10 11 12

如果您想要分组,levels()个是最合乎逻辑且最合适的。

现在你是否真的想要这是另一个问题。请参阅?split,它可以根据因素(您可以lapply()结束)或?aggregate等来分割数据框。还有 plyr 包,它似乎非常受欢迎。