假设我们有以下数据框
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)
答案 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