r语言 - 如何基于另一个列更新列



我想知道如何根据另一列更新一列的信息

我的例子看起来像

df <- data.frame(input = c("Teline stenopetala", "Teline stenopetala", 
"Teline stenopetala", "Prunus lusitanica", "Prunus lusitanica"),
n1 = c("Genista stenopetala Webb & Berthel.", NA, NA, NA, "Prunus hixa Brouss ex. Willd."))

df包括input列和n1列,n1列的值与input列的值相对应。

如果我在input列中发现任何重复的行,我想调用n1中空白的值将根据与input列的值相关联的n1中已经存在的值进行修改。

假设数据很大,所以我不想调用specific-name,例如使用df %>% mutate(n1 = case_when(input == "Teline stenopetala" ~ "..."

我想要的输出:

df <- data.frame(input = c("Teline stenopetala", "Teline stenopetala", 
"Teline stenopetala", "Prunus lusitanica", "Prunus lusitanica"),
n1 = c("Genista stenopetala Webb & Berthel.", "Genista stenopetala Webb & Berthel.", "Genista stenopetala Webb & Berthel.", "Prunus hixa Brouss ex. Willd.", "Prunus hixa Brouss ex. Willd."))

您可以将group_byfill按@margusl的建议向下设置,像这样:

library(tidyverse)
df %>%
group_by(input) %>%
fill(n1, .direction = "downup") 

输出:

# A tibble: 5 × 2
# Groups:   input [2]
input              n1                                 
<chr>              <chr>                              
1 Teline stenopetala Genista stenopetala Webb & Berthel.
2 Teline stenopetala Genista stenopetala Webb & Berthel.
3 Teline stenopetala Genista stenopetala Webb & Berthel.
4 Prunus lusitanica  Prunus hixa Brouss ex. Willd.      
5 Prunus lusitanica  Prunus hixa Brouss ex. Willd. 

试试这个

df <- data.frame(input = c("Teline stenopetala", "Teline stenopetala", 
"Teline stenopetala", "Prunus lusitanica", "Prunus lusitanica"),
n1 = c("Genista stenopetala Webb & Berthel.", NA, NA, NA, "Prunus hixa Brouss ex. Willd."))
library(dplyr , warn.conflicts = FALSE)
df %>% group_by(input) %>% 
mutate(n1 = n1[which(!is.na(n1))])
#> # A tibble: 5 × 2
#> # Groups:   input [2]
#>   input              n1                                 
#>   <chr>              <chr>                              
#> 1 Teline stenopetala Genista stenopetala Webb & Berthel.
#> 2 Teline stenopetala Genista stenopetala Webb & Berthel.
#> 3 Teline stenopetala Genista stenopetala Webb & Berthel.
#> 4 Prunus lusitanica  Prunus hixa Brouss ex. Willd.      
#> 5 Prunus lusitanica  Prunus hixa Brouss ex. Willd.

由reprex包(v2.0.1)创建于2022-06-12