【问题标题】:Creating a file with more than one data frame创建具有多个数据框的文件
【发布时间】:2012-07-30 00:00:42
【问题描述】:

我是 R 新手,所以如果这是一个基本问题,我提前道歉,但我搜索了高低,但没有找到答案。

我想制作一个包含多个数据框的文件。 (一个例子是 BradleyTerry2 包中的数据集“flatlizards”。该文件称为“flatlizards”,但其中有两个数据框——“contests”和“predictors”。当您要求查看数据“flatlizards”时两个数据框都分别显示在其相应的标题下)。

如何将两个单独命名的数据框连接到一个文件中?另外,如何使用 CSV 文件执行此操作?所有数据都需要放在一个 CSV 文件中还是多个文件中?提前感谢您,我非常感谢您的帮助。

【问题讨论】:

  • 搜索标题为“save”的 R 帮助页面 (?save)。
  • 欢迎来到 Stack Overflow!对于默默投反对票的人:这是summer of love,所以我建议您做以下几件事之一:1)解释为什么投反对票,2)向 OP 解释如何改进问题 3)编辑问题一个好问题。

标签: r csv dataframe


【解决方案1】:

有问题的对象是一个列表。您可以使用以下代码看到这一点:

library(BradleyTerry2)
data(flatlizards)
str(flatlizards)

你可以看到它是一个 2 的列表,它的元素是单独的数据框。

您可以很容易地将对象组合成这样的列表:

a <- data.frame(x=rnorm(10), y=runif(10))
b <- data.frame(w=rnorm(20), z=runif(20))

ablist <- list(a, b)

从那里开始,您采用@mrdwab 采用的方法。

或者,如果您希望它们在一个数据帧或一个 csv 中,您可以尝试使用merge

【讨论】:

  • 重新阅读问题后,我不确定 OP 是否对 保存 感兴趣,就像他们对创建 data.frameslist 感兴趣一样,所以+1!
  • 抱歉,我认为我的问题不清楚,因为我不知道它是“列表”的术语。现在 sebastian-c 给了我一些帮助(谢谢!)我可以澄清一下。
【解决方案2】:

这是一个非常基本的例子:

# Clean out your current workspace
rm(list=ls())

# Create two objects
a = 1:10
b = letters[1:10]

# Save them to one file
save(a, b, file="demo.RData")

# Remove them from the workspace
rm(a, b)
ls()
## character(0)

# Re-load the data
load("demo.RData")
ls()
## [1] "a" "b"
a
## [1]  1  2  3  4  5  6  7  8  9 10
b
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"

同样的原则也适用于 CSV 文件中的数据。只需将它们读入,进行您需要做的任何清理,然后将它们捆绑到一个 .RData 文件中。

还有save.image() 可以保存您当前工作区中的所有内容。

更新:阅读 Sebastian 的回答后,您似乎对创建 listdata.frames 更感兴趣。如果您对此感兴趣,并且需要从单独的 CSV 文件中读取数据,请参阅 this post 以帮助您入门。

【讨论】:

    【解决方案3】:

    要通过 sebastian-c 完成解决方案,您还可以命名列表的组件:

    a <- data.frame(x=rnorm(10), y=runif(10))
    b <- data.frame(w=rnorm(20), z=runif(20))
    
    ablist <- list(first=a, second=b)
    
    ablist$first
    ablist[[1]]
    
    ablist$second
    ablist[[2]]
    

    【讨论】:

    • 谢谢!这与 sebastian-c 的答案一起正是我所需要的!每次开始工作时都需要重做吗?
    • 如果没有您在做什么或为什么要这样做的背景,很难知道。如果您有数据框并且需要使用列表,则可以这样做,或者您可以将其转换为列表一次,然后使用 @mrdwab 的解决方案将其加载到创建的列表中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多