R 通过在另一个选项卡中查找值来改变一个选项卡

R 通过在另一个选项卡中查找值来改变一个选项卡,r,dplyr,purrr,R,Dplyr,Purrr,在R中争论数据时,我想以这样一种方式创建一个TIBLE,即在不同的TIBLE中查找新列中的数值 给定导管移除数据集: # A tibble: 51 x 2 ExplYear RemovalReason <dbl> <chr> 1 2018 Infection 2 2018 Dysfunction 3 2018 Infection # ... etc. 我已尝试使用和一个助手函数对第一个T

在R中争论数据时,我想以这样一种方式创建一个TIBLE,即在不同的TIBLE中查找新列中的数值

给定导管移除数据集:

# A tibble: 51 x 2
   ExplYear RemovalReason
      <dbl> <chr>        
 1     2018 Infection    
 2     2018 Dysfunction  
 3     2018 Infection    
# ... etc.
我已尝试使用和一个助手函数对第一个TIBLE进行变异:

lookup = function(year) { impl_per_year[impl_per_year$ImplYear == year,]$n }
explants %>% mutate(Implants = map(ExplYear, lookup)
但这会将大量空整数向量放入到列中:


错在哪里?

您应该能够按年份简单地将这两个表联接起来。如果我们使用dplyr将您的第一个tible称为explable,将您的第二个tible称为implable:


这将添加一个新的n列,其中包含每年的植入物数量。

您应该能够简单地按年度将两个表合并。如果我们使用dplyr将您的第一个tible称为explable,将您的第二个tible称为implable:

这应该添加一个新的n列,其中包含每年植入的数量。

librarytidyverse

我修改了你的数据,这样我的插图就不会有空输出

取决于你想要什么,考虑RealthJoin,InnLyJoin等,直到你得到你正在寻找的输出。例如:

inner_join(df, impl_per_year, by = c("ExplYear" = "ImplYear"))

# A tibble: 3 x 3
  ExplYear RemovalReason     n
     <dbl> <chr>         <dbl>
1     2017 Dysfunction      14
2     2016 Infection        46
3     2016 Infection        64
。。。它只提供两个Tibble的成功匹配。

librarytidyverse

我修改了你的数据,这样我的插图就不会有空输出

取决于你想要什么,考虑RealthJoin,InnLyJoin等,直到你得到你正在寻找的输出。例如:

inner_join(df, impl_per_year, by = c("ExplYear" = "ImplYear"))

# A tibble: 3 x 3
  ExplYear RemovalReason     n
     <dbl> <chr>         <dbl>
1     2017 Dysfunction      14
2     2016 Infection        46
3     2016 Infection        64

。。。这将只提供两个Tibble的成功匹配。

谢谢。我把@michael levin的正确答案归功于left_join,因为他早一点给出了答案&他是一个新的贡献者。至于连接列的名称,我明白你的意思,但在这种情况下,我更喜欢明确的名称,这样我以后会知道这是关于植入和植入年份的。谢谢。我把@michael levin的正确答案归功于left_join,因为他早一点给出了答案&他是一个新的贡献者。至于连接列的名称,我明白你的意思,但在这种情况下,我更喜欢明确,这样我以后的自己就会知道这是关于植入和植入年。
ExplTibble %>% left_join(ImplTibble, by = c("ExplYear" = "ImplYear"))
df <- tribble(
~ExplYear, ~RemovalReason,
2018, "Infection",   
2017, "Dysfunction",
2016, "Infection")

impl_per_year <- tribble(
  ~ImplYear, ~n,
  2017, 14,
  2016, 46,
  2016, 64
)
left_join(df, impl_per_year, by = c("ExplYear" = "ImplYear"))

# A tibble: 4 x 3
  ExplYear RemovalReason     n
     <dbl> <chr>         <dbl>
1     2018 Infection        NA
2     2017 Dysfunction      14
3     2016 Infection        46
4     2016 Infection        64
inner_join(df, impl_per_year, by = c("ExplYear" = "ImplYear"))

# A tibble: 3 x 3
  ExplYear RemovalReason     n
     <dbl> <chr>         <dbl>
1     2017 Dysfunction      14
2     2016 Infection        46
3     2016 Infection        64