R split是否始终对生成的数据帧进行内部排序
我只是想知道是否可以确定split()总是对结果进行排序? 排序的规则是什么? 这个例子很有效,但我在帮助页面中没有找到相应的行。对不起,如果我误读了帮助R split是否始终对生成的数据帧进行内部排序,r,R,我只是想知道是否可以确定split()总是对结果进行排序? 排序的规则是什么? 这个例子很有效,但我在帮助页面中没有找到相应的行。对不起,如果我误读了帮助 dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac = c(2,1)) split(dat.exmpl, dat.exmpl$fac) dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac=rep(c("
dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac = c(2,1))
split(dat.exmpl, dat.exmpl$fac)
dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac=rep(c("blueb","bluea")))
split(dat.exmpl, dat.exmpl$fac)
dat.exmpl拆分的排序顺序是分组变量的因子顺序。因此,如果分组变量是一个因子,那么该因子的级别将保持不变
例如:修改数据,使fac
具有c(“blue”、“bluea”)
:
谢谢你的回答。然而,您能否更详细地解释“分组变量的因子顺序”的含义?split()是否在内部强制分组变量为因子?正常的排序顺序是什么?对于数字变量,这是显而易见的,但对于字符,我不确定为什么它在“bluea”之前排序为“blueb”。它真的按照字符串排序吗?如果分组变量已经是factor,那么split
不会进行任何排序。在我的示例中,blueb
在bluea
之前,因为这就是我定义因子水平的方式,也就是说,这就是我示例的要点。总之:split
不进行任何排序。如果排序似乎正在发生,那是因为factor()
处理因子级别的方式(通常按字典顺序排序)。有关更多详细信息,请参阅?factor
的帮助,特别是levels
参数。感谢您的澄清。但是,我的意思是,如果不使用因子,则对split进行排序(如我最初的示例中所示)。split将分组变量内部强制为排序发生的因子,对吗?
dat.exmpl <- data.frame(
a=11:20,
b=rep(3,10),
fac=factor(rep(c("blueb","bluea")), levels=c("blueb","bluea"))
)
split(dat.exmpl, dat.exmpl$fac)
$blueb
a b fac
1 11 3 blueb
3 13 3 blueb
5 15 3 blueb
7 17 3 blueb
9 19 3 blueb
$bluea
a b fac
2 12 3 bluea
4 14 3 bluea
6 16 3 bluea
8 18 3 bluea
10 20 3 bluea