【问题标题】:Group By and Append Row in R在 R 中分组并追加行
【发布时间】:2019-12-07 06:42:09
【问题描述】:

我有一个包含多个代码的数据框。随着新信息进入市场,我想将数据添加到表格中。

df = data.frame(ticker = c(rep("AAPL", 2), rep("SPY", 2)), price = rnorm(4))
print(df)
ticker      price
1   AAPL -0.6039186
2   AAPL -0.1661572
3    SPY -1.1038832
4    SPY  0.1755888

#New prices were discovered. 
df.new = data.frame(ticker = c("AAPL", "SPY"), price = rnorm(2))
print(df.new)
  ticker      price
1   AAPL -0.1527394
2    SPY -0.5448376

我想在每个股票行尾插入这些。最终数据框应如下所示。

ticker      price
1   AAPL -0.6039186 #original
2   AAPL -0.1661572 #original
3   AAPL -0.1527394 #new
4    SPY -1.1038832 #original
5    SPY  0.1755888 #original
6    SPY -0.5448376 #new

我最初是在尝试

df %>% group_by(ticker) %>% rbind(df.new)

在评论之后我尝试了这个并且它有效。这是你想这样做的方式吗?

df.final = rbind(df, df.new) %>% group_by(ticker) %>% sort(#in my case by date which I opted to leave out in the example)

【问题讨论】:

  • 你尝试了什么?如果您遇到困难,我们可以提供帮助。这是一个基本的行绑定和排序。
  • 嗨冻糕!谢谢!我想我是从阅读您的评论中弄清楚的。我添加了一些编辑。如果是我写的,请告诉我。
  • @JordanWrong - 是的,我觉得不错。如果您在 tidyverse 中工作,dpylr 中也有 bind_rows
  • bind_rows(df, df.new) %>% arrange(ticker, date) 应该可以工作。如果您已经在使用dplyr 和朋友,我建议您使用bind_rows 而不是rbind;虽然后者可以工作,但dplyr 版本增加了明确的保护措施(包括重新排序列,如果它们不合适但仍然存在,rbind 无法处理)。

标签: r group-by data.table tidyverse


【解决方案1】:

以下是否意识到 r2evans 已经在评论中提出了确切的建议...

library(dplyr)

df = tibble(ticker = c(rep("AAPL", 2), rep("SPY", 2)), price = rnorm(4))

#New prices were discovered. 
df.new = tibble(ticker = c("AAPL", "SPY"), price = rnorm(2))

df %>% bind_rows(df.new) %>% arrange(ticker)
#> # A tibble: 6 x 2
#>   ticker  price
#>   <chr>   <dbl>
#> 1 AAPL    1.36 
#> 2 AAPL   -1.19 
#> 3 AAPL   -0.208
#> 4 SPY     0.137
#> 5 SPY    -1.87 
#> 6 SPY     1.51

【讨论】:

    猜你喜欢
    • 2014-05-09
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2021-01-21
    • 2020-11-11
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多