获取R中的最新更新值 [英] Get the latest updated value in R

查看:0
本文介绍了获取R中的最新更新值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在此之后提出另一个问题(Get the latest updated value based on other columns),因为我的问题可能不清楚。

最初,我有两个数据帧,其中一个包含name2列中的NA值,另一个包含name1列中的NA值。然后,我使用bind_rows获得了一个大数据帧作为示例。列name3name1name2的组合。

name1               name2                  name3
Acer laurinum        NA                     Acer laurinum
Acmella paniculata   NA                     Acmella paniculata
Aglaia lawii         NA                     Aglaia lawii
............         NA                     ...................
NA                   Acer laurinum Hassk.   Acer laurinum Hassk.
NA                   Aglaia lawii (Wight)   Aglaia lawii (Wight)
NA                   ....................   ....................                  
如您所见,name3列中的几个名字遗漏了作者部分。这就是为什么我要根据列name2name3更新这些名称的原因。 对我使用tidyverse有什么建议吗?

代码示例

df <- data.frame(
name1 = c("Acer laurinum", "Acmella paniculata", "Aglaia lawii", NA, NA), 
name2 = c(NA, NA, NA, "Acer laurinum Hassk.", "Aglaia lawii (Wight)"),
name3 = c("Acer laurinum", "Acmella paniculata", "Aglaia lawii", "Acer laurinum Hassk.", "Aglaia lawii (Wight)"))

我想要的输出

name1               name2                  name3
Acer laurinum        NA                     Acer laurinum Hassk.
Acmella paniculata   NA                     Acmella paniculata
Aglaia lawii         NA                     Aglaia lawii (Wight)
NA                   Acer laurinum Hassk.   Acer laurinum Hassk.
NA                   Aglaia lawii (Wight)   Aglaia lawii (Wight)

推荐答案

您可以这样做: 创意:

  1. 带入长格式数据
  2. 使用stringr中的word使用名称的第一个单词创建helper
  3. GROUP BYhelperANDmutate最后一个组的值
  4. 恢复宽格式
library(dplyr)
library(stringr)

df %>% 
  mutate(id = row_number()) %>% 
  pivot_longer(
    cols = -id
  ) %>% 
  mutate(helper= word(value, 1)) %>% 
  group_by(helper) %>% 
  mutate(value= last(value)) %>% 
  pivot_wider(
    names_from = name,
    values_from = value
  ) %>% 
  ungroup() %>% 
  select(-id, -helper) %>% 
  filter(if_any(everything(), ~ !is.na(.)))
  name1                name2                name3               
  <chr>                <chr>                <chr>               
1 Acer laurinum Hassk. NA                   Acer laurinum Hassk.
2 Acmella paniculata   NA                   Acmella paniculata  
3 Aglaia lawii (Wight) NA                   Aglaia lawii (Wight)
4 NA                   Acer laurinum Hassk. Acer laurinum Hassk.
5 NA                   Aglaia lawii (Wight) Aglaia lawii (Wight)

这篇关于获取R中的最新更新值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆