Agregue una nueva fila sobre la base de los valores de columna en R

Inshal Khan

Estoy tratando de entender esta simple tarea de preprocesamiento en R. Estoy tratando de obtener la columna de valor ideal como una fila titulada ideal en Product ID. Creo que la imagen de abajo arrojará más luz sobre esto.

ingrese la descripción de la imagen aquí

> dput(df)

structure(list(Consumer = c(43L, 43L, 43L, 43L, 43L, 41L, 41L, 
41L, 41L, 41L), Product = c(106L, 992L, 366L, 257L, 548L, 106L, 
992L, 366L, 257L, 548L), Firm = c(1L, 1L, 1L, 1L, 1L, 0L, 0L, 
0L, 0L, 0L), Juicy = c(1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L
), Sweet = c(0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L), Ideal_Firm = c(1L, 
1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L), Ideal_Juicy = c(1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Ideal_Sweet = c(1L, 1L, 1L, 
1L, 1L, 0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA, 
-10L))
Rosalie Bruel

A continuación se muestra una solución:

df <- data.frame(
  Consumer = c(rep(43, 5), rep(41, 5)),
  Product = rep(sample(100:900,size = 5, replace = F), 2),
  Firm = c(sample(rep(0:1, 5), replace = T)),
  Juicy = c(sample(rep(0:1, 5), replace = T)),
  Sweet = c(sample(rep(0:1, 5), replace = T)),
  Ideal_Firm = 1, 
  Ideal_Juicy = c(rep(1, 5), rep(2, 5)), 
  Ideal_Sweet = c(rep(1, 5), rep(0, 5))
)

library(dplyr)
df <- merge(
  # Bind the observation...
  df %>% select(Consumer:Sweet) %>% 
    pivot_wider(id_cols = Consumer,names_from = Product,values_from = Firm:Sweet),
  # ... to the ideal
  df %>% group_by(Consumer) %>% 
    # Here I put mean, but it could be 1, median, min, max... If I understood correctly, it has to be 1?
    summarise(across(Ideal_Firm:Ideal_Sweet, ~mean(.x))) %>%
    # Rename so the column name has the form [characteristic]_ideal instead of Ideal_[characteristic]
    # remove prefix Ideal_ ...
    rename_at(.vars = vars(starts_with("Ideal_")),
              .funs = funs(sub("Ideal_", "", .))) %>%
    # ... add _Ideal as a suffix instead
    rename_at(vars(-Consumer), function(x) paste0(x,"_Ideal"))
)

# Then manipulate to get into long form again
df <- df %>% pivot_longer(cols = !Consumer) %>%
  separate(name, c("Characteristic", "Product")) %>%
  pivot_wider(id_cols = Consumer:Product, names_from = Characteristic, values_from = value)
df       

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Agregue condicionalmente valores a una nueva columna y reemplace los valores en la columna de acondicionamiento en R

Marco de datos: agregue los valores enumerados en una nueva columna de la función if else

Quiero agregar una nueva columna sobre la base de los datos de otra columna en pandas

Quiero agregar una nueva columna sobre la base de los datos de otra columna en pandas

Agregue una nueva columna en Spark DataFrame que contiene la suma de todos los valores de una columna: Scala / Spark

construir una nueva columna basada en los valores de la fila anterior

Agregue una nueva columna que contenga una matriz de nombres de columna ordenados por los valores de fila

Agregue una nueva columna a la tabla temporal según los valores de una columna

Pandas: copia la base del marco de datos en los valores en una nueva columna

Pandas: copia la base del marco de datos en los valores en una nueva columna

Salida "NA" en una nueva columna cuando los valores de cadena son los mismos que en la fila anterior

Python: agregue una matriz como una nueva columna que contiene los valores anteriores de x para cada fila

Ordene parte de DataFrame en Python Panda, devuelva una nueva columna con orden según los valores de la fila

¿Cómo creo una nueva columna en pyspark donde los valores de fila son los mismos?

agregue una nueva columna con etiquetas html en el marco de datos R en función de los valores de otra columna

Agregue una nueva columna al marco de datos y agregue valores únicos a cada fila

Cree una nueva base de columna en la columna existente, pero la fila de arriba

Agregue los ceros de las columnas en una nueva fila en R

cómo obtener una fila sobre la base de los datos json almacenados en una columna en Postgresql

¿Cómo obtener una lista de los valores n anteriores de una columna en una nueva columna de la fila actual?

Agregue una nueva fila en la base de datos mysql a través de wordpress usando php

Busque el valor en la columna y sobrescriba la fila; de lo contrario, agregue una nueva fila

Filtre la columna de pandas con los valores de fila actuales y sume otra columna para formar una nueva columna

Pandas DataFrame: agregue una nueva columna con valores calculados basados en la fila anterior

Los pandas crean una nueva columna basada en los primeros valores únicos de la columna existente

Agregue la SUMA de los valores de dos LISTAS en una nueva LISTA

Para cada fila, agregue el nombre de la columna a la lista en la nueva columna si el valor de la fila coincide con una condición

Cree una nueva columna en el marco de datos de pandas basada en los valores archivados en la fila de otras columnas

Verifique si el valor de la fila coincide con uno de los valores en una lista, luego asigne 1/0 en una nueva columna