R:按因子对数据进行子集

时间:2018-03-28 19:07:25

标签: r dataframe subset

假设我们有以下数据框

foo
  k h=1 h=2 h=3
1 3   3   6   9
2 2   2   5   8
3 1   1   4   7

str(check)
'data.frame':   3 obs. of  4 variables:
 $ k  : Factor w/ 3 levels "3","2","1": 1 2 3
 $ h=1: int  3 2 1
 $ h=2: int  6 5 4
 $ h=3: int  9 8 7

如何根据k因素对数据框进行子集化?例如,仅获得k = 3的行或所有行k <3。我尝试使用subet(foo, k=3),但它不起作用。我还尝试将列k转换为数字,但随后我的data.frame失去了它的顺序。重要的是,数据是关于k(所以3,2,1)

的降序

1 个答案:

答案 0 :(得分:0)

括号表示法应该能够在没有任何问题的情况下对因子进行分组:

# Returns all rows of foo where k == '3'
foo[foo$k == '3',]

您之前所做的两个可能的问题:

1)subset(foo, k=3)应为subset(foo, k==3),不要将等于运算符(==)与赋值运算符(=)混淆

2)由于您要与系数的实际级别进行比较,因此应检查字符'3'而不是数字3是否相等。您可以在str()的输出中看到k的级别为"3","2","1",带引号,而其他变量的整数则显示为不带引号3 2 1