簡體   English   中英

如何根據來自另一個 tibble 的信息添加 tibble 列

[英]How to add a tibble column based on information from another tibble

我有以下兩個小標題:

my_stats_tbl <- tribble(
  ~year,   ~model_id,
  2011,      "132",
  2012,      "145,167",
  2013,      "132,145,167",
  2014,      "132,174",
  2015,      "174,182,183",
  2016,      "183",
  2017,      "191"
)

model_tbl <- tribble(
  ~id,      ~name,
  132,      "Race",
  145,      "Out",
  167,      "Lazer",
  174,      "Wow",
  182,      "Super",
  183,      "Tornado",
  191,      "Cloud"
)

我想在第一列中添加另一列,以便我可以根據第二個小標題的值列出 model 名稱。 這是預期的 output 應該如下所示:

my_new_stats_tbl <- tribble(
  ~year,   ~model_id,            ~model_name,
  2011,      "132",                "Race",
  2012,      "145,167",            "Out,Lazer",
  2013,      "132,145,167",        "Race,Out,Lazer",
  2014,      "132,174",            "Race,Wow",
  2015,      "174,182,183",        "Wow,Super,Tornado",
  2016,      "183",                "Tornado",
  2017,      "191",                "Cloud"
)

我怎樣才能做到這一點?

謝謝,

這是一個解決方案,遵循卡米爾的評論:

library(tidyr)
library(dplyr)
#make tidy
newstats<-my_stats_tbl %>% separate_rows(model_id, sep=",") 
#convert id from character to number
newstats$model_id<-as.integer(newstats$model_id)
#join tables
newstats<-left_join(newstats, model_tbl, by=c("model_id" = "id"))
#make untidy
newstats %>% group_by(year) %>%  summarize(model_id = paste0(model_id, collapse = ","), name=paste0(name, collapse = ",")) 

# # A tibble: 7 x 3
#   year model_id    name             
#   <dbl> <chr>       <chr>            
# 1  2011 132         Race             
# 2  2012 145,167     Out,Lazer        
# 3  2013 132,145,167 Race,Out,Lazer   
# 4  2014 132,174     Race,Wow         
# 5  2015 174,182,183 Wow,Super,Tornado
# 6  2016 183         Tornado          
# 7  2017 191         Cloud 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM