【问题标题】:How do I mutate a value in tibble into another value within same tibble?如何将 tibble 中的值变异为同一 tibble 中的另一个值?
【发布时间】:2020-04-20 14:58:07
【问题描述】:

我想引用同一个 tibble 中的另一个值并将我的初始值更改为该值。例如,如果我有一个 tibble,

tibble(x = 200:203, y = c("a","b","c", "d"), z = c(NA, 202,201,NA))

我想得到 tibble(x = 200:203, y = c("a","b","c", "d"), z = c(NA, "c","b",NA))

结果。

我尝试了mutate(tbl,z, ifelse(!is.na(z), tbl[[which(fixed_messages$id == z),2]], NA)),但它不起作用。

另外,如何在 stackoverflow 问题中插入 tibble?

【问题讨论】:

标签: r dplyr


【解决方案1】:

我们可以left_jointibble 本身和select 我们需要的列。

library(dplyr)

left_join(df, df, by = c('x' = 'z')) %>% select(x, y = y.x, z = y.y)

# A tibble: 4 x 3
#     x   y     z    
#  <dbl> <chr> <chr>
#1   200 a     NA   
#2   201 b     c    
#3   202 c     b    
#4   203 d     NA   

【讨论】:

  • 谢谢!您是如何添加此代码并在您的 stackoverflow 评论中显示 tibble 的?
  • @zhao 您添加数据的方式很好。其他方式是通过dput。为了包括小标题的显示,我手动复制粘贴它。
【解决方案2】:

你可以这样做:

tbl %>%
 mutate(z = y[match(z, x)])

      x y     z    
  <int> <chr> <chr>
1   200 a     <NA> 
2   201 b     c    
3   202 c     b    
4   203 d     <NA> 

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2022-01-13
    • 1970-01-01
    • 2021-12-20
    • 2023-03-05
    相关资源
    最近更新 更多