【问题标题】:How to make different dataframes using split如何使用拆分制作不同的数据框
【发布时间】:2016-11-28 13:52:01
【问题描述】:

我知道 split 命令是将 df 转换为 df 对象列表的最简单方法,但是如何将它们分配给不同的(分离的)数据帧?

df.List <- split(df, df$column)

【问题讨论】:

  • 我不太明白你的问题。 data.frames 列表和不同 data.frames 之间有什么区别?以及为什么要避免使用列表?
  • 橡皮鸭本人!就我而言, split 参数包含一个长字符串。因此,调用每个“子集”很困难。重命名子集是更好的解决方案。 nam
  • 你想把它作为答案发布,以帮助将来有同样问题的人吗?

标签: r


【解决方案1】:

查看函数list2env。试试:

list2env(split(df, df$column), envir = .GlobalEnv)

【讨论】:

  • 这将是一个非常简单易行的解决方案!如前所述,我的变量包含字符串,因此使用 list2env 它们成为我的列名。谢谢!
  • @Oblmns,对不起。我不太明白你的评论。也许如果您发布一些示例数据和您要查找的输出示例,我可以更新我的答案以使其更有意义。
  • a
  • @Oblmns,是的,但是由于其中有空格,因此您需要使用反引号来访问它们,例如`more words in a long sentence`
【解决方案2】:

这是我的解决方案(以 iris 数据集为例)

两种方式:

list_df <- split(iris, iris$Species) #split the dataset into a list of datasets based on the value of iris$Species
list2env(list_DF, envir= .GlobalEnv) #split the list into separate datasets

一种方式:

list2env(split(iris, iris$Species), envir = .GlobalEnv)

或者您可以使用for 循环为新数据集分配自定义名称:

iris_split <- split(iris, iris$Species)
new_names <- c("one", "two", "three")
for (i in 1:length(iris_split)) {
  assign(new_names[i], iris_split[[i]])

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2011-03-19
    相关资源
    最近更新 更多