【问题标题】:How to separate each column in a data frame and make each column into its own new data set如何分隔数据框中的每一列,并使每一列成为自己的新数据集
【发布时间】:2018-07-10 15:04:30
【问题描述】:

这个问题的标题可能有点令人困惑,所以让我再详细一点。如果我的术语有缺陷,我提前道歉。所以这是我的数据框的一个例子

a b c d e
1 4 2 7 8
2 4 3 7 1
4 3 5 9 3

所以我想做的是让每一列都成为自己的数据集。我知道你可以做类似a <- df[c(1)] b <- df[c(2)] 之类的事情。我的真实数据框有数千列,所以必须输入它会很烦人。我想知道是否有更快的方法来做到这一点?理想情况下,我希望新数据集与列具有相同的名称,但我不太确定如何去做。我知道会有成千上万的数据集,但我有一台可以处理它的计算机

【问题讨论】:

  • 是否有理由让所有这些数据帧在环境中松散,而不是每个都是列表中的一个项目?对于这个玩具示例,这意味着您有一个对象,例如df_list,并调用 df_list$bdf_list[[2]],而不是有 5 个不同的对象,没有任何东西将它们结合在一起。这可能是偏好,但需要考虑
  • @camille 这实际上是一个很好的观点,我没有想到这一点。这实际上是一种更好的方法。
  • 酷,你需要帮助吗,或者你认为你从这里得到帮助?
  • purrrmap 函数应该可以帮助您避免重复的dplyr 命令
  • @camille 我会去看看!我真的很感激这些建议!他们非常有帮助。我知道它们对你来说似乎微不足道,但我对此很陌生!每一点都有帮助!

标签: r dplyr tidyr


【解决方案1】:

您可以使用list2env,但请三思而后行,或许您最好让事情尽可能有条理:

df <- head(iris)
list2env(df,envir = .GlobalEnv)
Species
# [1] setosa setosa setosa setosa setosa setosa
# Levels: setosa versicolor virginica

或将它们保留为一列 data.frames:

list2env(setNames(lapply(names(df), function(x) df[x]),names(df)),
  envir = .GlobalEnv)
Species
#   Species
# 1  setosa
# 2  setosa
# 3  setosa
# 4  setosa
# 5  setosa
# 6  setosa

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多