【问题标题】:Store the output as dataframe (dplyr) [closed]将输出存储为数据帧(dplyr)[关闭]
【发布时间】:2019-10-09 21:25:14
【问题描述】:

我有以下代码:

data <- c(62, 60, 63, 59, 63, 67, 71, 64, 65, 66, 68, 66, 
          71, 67, 68, 68, 56, 62, 60, 61, 63, 64, 63, 59)
grp <- factor(rep(LETTERS[1:4], c(4,6,6,8)))
de <- data.frame(group=grp, dt=data)

de %>% 
  group_by(group) %>% 
  summarize(mean = mean(dt),
            sum = sum(dt))

代码运行良好。但我有一个问题:

如何将输出结果存储为数据框并为其分配名称?

谢谢!

【问题讨论】:

  • de %&gt;% group_by(group) %&gt;% summarize(mean = mean(dt), sum = sum(dt)) %&gt;% as.data.frame -&gt; de.saved
  • 谢谢!添加 %>% as.data.frame 有效。但是,您知道如何为该数据框分配名称(df)吗?这样如果我调用 df 它就会打印出来
  • 我建议,如果您在分配变量时遇到问题,请先退后一步,阅读一些基本的 R 教程,然后再回到具体问题。分配变量是您在任何语言中学习的第一件事。在 R 中,它的完成方式类似于 x &lt;- "whatever"x = "whatever"
  • df 只是名称。您可以将其保存为我在第一条评论中的de.saveddataframeofmine 或其他任何内容。 de %&gt;% group_by(group) %&gt;% summarize(mean = mean(dt), sum = sum(dt)) %&gt;% as.data.frame -&gt; df

标签: r dplyr


【解决方案1】:

另一个建议: 使用 &lt;- 将 df 分配给全局环境。

df <- de %>% 
group_by(group) %>%
summarize(mean = mean(dt),
sum = sum(dt)) %>%
mutate_if(is.numeric, round, 2). # changes 2 to the desired number of decimals 

【讨论】:

  • 谢谢!我在最后添加 %>% as.data.frame ,它起作用了。但是你知道如何给这个数据框命名以便我以后调用它吗?
  • 是的,使用&lt;- 运算符为您的数据框分配一个唯一名称。因此,在我发布的示例中,您可以通过在控制台或您正在处理的其他脚本中键入 df 来调用您的 df。 &lt;- 运算符将数据帧等对象存储到 Rs 全局环境中。
【解决方案2】:

我们可以使用options改变科学格式的printing

options(scipen = 999)
dout <- de %>% 
            group_by(group) %>% 
            summarize(mean = mean(dt),
            sum = sum(dt))

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 2017-10-12
    • 2014-08-13
    • 2016-12-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2018-11-16
    相关资源
    最近更新 更多