【问题标题】:Adding a third column to list of data frames R tidyverse将第三列添加到数据框列表 R tidyverse
【发布时间】:2020-10-30 15:47:23
【问题描述】:

我有一个数据框,其中最后一列(“数据”)由一系列数据框组成,每个数据框都有一个“年份”和一个“产量”列。我想向列中的每个数据框添加第三列“Det_Yield”。我想知道如何以“tidyverse”的方式做到这一点。

我已经使用循环完成了它,就像这样,但我想知道如何使用 map 或其他一些整洁的方法来做到这一点。谢谢。

   for (cty in 1:66){
       corn_by_county[[3]][[cty]]$Det_Yield <- NA
       yield_model <- lm(corn_by_county[[3]][[cty]]$Yield ~ corn_by_county[[3]][[cty]]$Year)
       corn_by_county[[3]][[cty]]$Det_Yield <- resid(yield_model)}

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    您可以通过以下方式使用map

    library(dplyr)
    library(purrr)
    
    viewOutput <- df %>%
      mutate(data = map(data, ~ mutate(.x, det_yield = 'whatever')))
    
    viewOutput$data
    
    # [[1]]
    # A tibble: 2 x 3
    #    year yield det_yield
    #   <dbl> <dbl> <chr>    
    # 1  1999     5 whatever 
    # 2  2000     6 whatever 
    
    # [[2]]
    # A tibble: 2 x 3
    #    year yield det_yield
    #   <dbl> <dbl> <chr>    
    # 1  2001     7 whatever 
    # 2  2002     8 whatever
    

    任意演示数据

    df <- structure(list(data = list(structure(list(year = c(1999, 2000
    ), yield = c(5, 6)), row.names = c(NA, -2L), class = c("tbl_df", 
    "tbl", "data.frame")), structure(list(year = c(2001, 2002), yield = c(7, 
    8)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
    )))), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
    ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-27
      • 2019-12-25
      • 2020-08-02
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 2015-04-23
      • 2020-10-10
      相关资源
      最近更新 更多