获取R中的最新更新值 [英] Get the latest updated value in R
本文介绍了获取R中的最新更新值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在此之后提出另一个问题(Get the latest updated value based on other columns),因为我的问题可能不清楚。
最初,我有两个数据帧,其中一个包含name2
列中的NA值,另一个包含name1
列中的NA
值。然后,我使用bind_rows
获得了一个大数据帧作为示例。列name3
是name1
和name2
的组合。
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
列中的几个名字遗漏了作者部分。这就是为什么我要根据列name2
或name3
更新这些名称的原因。
对我使用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)
推荐答案
您可以这样做: 创意:
- 带入长格式数据
- 使用
stringr
中的word
使用名称的第一个单词创建helper
列 - GROUP BY
helper
ANDmutate
最后一个组的值 - 恢复宽格式
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屋!
查看全文