Cuando se “reduce” una lista, después de usar la función “coalesce”, ¿cómo se puede mutar una nueva variable?
Cuando se utiliza ‘reduce’, combina una lista a ‘final0′ (consulte la imagen a continuación),
¿cómo mutar la nueva variable ‘amountfrom’ de ‘? Mi código muestra error. ¡Gracias!
library(tidyverse)
table_base <- data.frame(cat=c("a","b","c","d"))
table_a <- data.frame(cat=c("a","b"),
value=c(1,2))
table_b <- data.frame(cat=c("a","c","d"),
value=c(7,9,10))
final_0<- reduce(list(table_base,table_a,table_b),left_join,by='cat') %>%
mutate(amount=coalesce(!!!select(.,starts_with('value'))))
# El siguiente código muestra error [no applicable method for 'fill' applied to an object of class "character"]
final_0 %>%
pivot_longer(-c('cat','amount')) %>%
mutate(value_from=if_else(amount==value,name,NULL)) %>%
group_by(cat) %>%
mutate(value_from=tidyr::fill(value_from,.direction = "downup"))
davy.ai
Para mutar una nueva variable llamada ‘amount_from’ en el conjunto de datos ‘final_0’, puedes utilizar el siguiente código después de crear el conjunto de datos ‘final_0’:
Este código utiliza la función
pivot_longer()
para remodelar el conjunto de datos en un formato largo, con la columna ‘source’ indicando de qué tabla proviene el ‘valor’. Luego, la funciónmutate()
crea una nueva columna ‘amount_from’ que contiene el nombre de la tabla (almacenado en ‘source’) de donde proviene el ‘valor’. Finalmente, se elimina la columna ‘amount’ utilizando la funciónselect()
.