为了账号安全,请及时绑定邮箱和手机立即绑定

根据一个因素的级别将数据分割成新的数据。

/ 猿问

根据一个因素的级别将数据分割成新的数据。

ITMISS 2019-06-26 17:16:02

我试着创建一个独立的data.frame基于因子级别的对象。所以如果我有:

df <- data.frame(
  x=rnorm(25),
  y=rnorm(25),
  g=rep(factor(LETTERS[1:5]), 5))

我怎么能分开df分开data.frame的每个级别的g包含相应的xy价值?我可以用split(df, df$g),但我希望每个层次的因素都有它自己的data.frame..做这件事最好的方法是什么?

谢谢。

根据一个因素的级别将数据分割成新的数据。

查看完整描述

2 回答

?
侃侃无极

我觉得split做你想做的事。

注意,X是一个数据帧列表,如str:

X <- split(df, df$g)str(X)

如果要使用组g名称的单个对象,则可以将X的元素赋值于split对于这些名称的对象来说,这似乎是额外的工作,因为您只需要从列表中索引数据帧。split创造。

#I used lapply just to drop the third column g which is no longer needed.Y <- lapply(seq_along(X), function(x) as.data.frame(X[[x]])[, 1:2]) #Assign the dataframes in the list Y to individual objectsA <- Y[[1]]B <- Y[[2]]C <- Y[[3]]D <- Y[[4]]E <- Y[[5]]#Or use lapply with assign to assign each piece to an object all at oncelapply(seq_along(Y), function(x) {
    assign(c("A", "B", "C", "D", "E")[x], Y[[x]], envir=.GlobalEnv)
    })

编辑甚至比使用lapply分配给全局环境使用list2env:

names(Y) <- c("A", "B", "C", "D", "E")list2env(Y, envir = .GlobalEnv)A


查看完整回答
反对 回复 2019-06-26
?
撒科打诨

是每个人的分裂data.frame创建使用split变成个人的,独立的,我有困难的东西。这正是我要找的。

查看完整回答
反对 回复 2019-06-26

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信