Dividir un marco de datos con divisiones duplicadas y nombra la nueva lista -- r campo con dplyr camp Relacionados El problema

split a data frame with duplicate splits and name the new list


1
vote

problema

Español

Tengo un marco de datos que parece:

     cat        split_me           <chr>      <chr>            1 MVHYM7693B c(1, 7)          2 ZRRBS1363E c(2, 7, 18)      3 ZXYLV2407F 3                4 HXPPE8608M 4                5 JDARX0644Q c(5, 19)         6 HDBOK8136L 6                7 DCJPS0833K c(1, 2, 7, 18)    

Puedo usar lo siguiente para dividir los datos:

  splt <- to_split %>%    split(.$split_me)   

que me da una lista de 19 elementos. Sin embargo, los datos originales tenían 20 elementos. La división que se repite es dividida c(5, 19) . ¿Cómo puedo ignorar esta repetición y dividir c(5, 19) dos veces?

Quiero nombrar las divisiones de acuerdo con la columna cat4 en to_split , por lo tanto, c(5, 19)6 tendrá diferentes nombres ( JDARX0644Q ) y ( BZRXF3978Z ).

DATOS:

  to_split <- structure(list(cat = c("MVHYM7693B", "ZRRBS1363E", "ZXYLV2407F",  "HXPPE8608M", "JDARX0644Q", "HDBOK8136L", "DCJPS0833K", "UGDYS1458B",  "ROQIP3617B", "HZMGG4347S", "EHESH8836T", "YGXZY0073I", "NMRDZ9798F",  "WXBKD9937H", "JEMQK6388P", "QQMSV0889M", "IBMJM4467Q", "IOIDB2993Q",  "BZRXF3978Z", "NJLNW3044Z"), split_me = c("c(1, 7)", "c(2, 7, 18)",  "3", "4", "c(5, 19)", "6", "c(1, 2, 7, 18)", "8", "9", "10",  "11", "12", "c(13, 18)", "14", "15", "16", "17", "c(2, 7, 13, 18)",  "c(5, 19)", "20")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,  -20L))   

Editar:

Lo que creo que es mejor para mis datos es volver a ordenar la columna c(5, 19)10 . En este momento se ve los datos:

  splt <- to_split %>%    split(.$split_me) 111  

AQUÍ splt <- to_split %>% split(.$split_me) 2 En el splt <- to_split %>% split(.$split_me) 3 corresponde a la fila 1 de los datos y splt <- to_split %>% split(.$split_me) 4 corresponde a la fila splt <- to_split %>% split(.$split_me) 5 . Creo que debería volver a organizar la columna de modo que:

Fila splt <- to_split %>% split(.$split_me) 6 no cambia. Es decir. splt <- to_split %>% split(.$split_me) 7 - El splt <- to_split %>% split(.$split_me) 8 es el primero y, por lo tanto, no necesita cambiar. La fila splt <- to_split %>% split(.$split_me) 9 también no cambia Dado que el c(5, 19)0 en el c(5, 19)1 es primero y coincide con el número de fila c(5, 19)2 . < / p>

fila c(5, 19)3 CAMBIOS. Originalmente es c(5, 19)4 c(5, 19)5 es el tercero en la secuencia, quiero moverlo a la primera. Por lo que c(5, 19)6 .

Fila c(5, 19)7 no cambia. Cambios de la fila 18 - original c(5, 19)8 Salida deseada c(5, 19)9 Cambios de la fila 19 - Original c(5, 19)0

Salida deseada c(5, 19)1 .

Esto debería solucionar el problema y los problemas duplicados que más tarde tengo con el código. Por ejemplo, estoy tratando de obtenerlo de tal que para divisiones c(5, 19)2 : los datos contenidos en c(5, 19)3 serán 99887776634 o por encima de los datos en c(5, 19)5 (en un marco de datos). Luego, para SPLIT c(5, 19)6 Los datos en c(5, 19)7 estarán por encima de los datos en c(5, 19)8 . (Espero que esto tenga sentido)

Original en ingles

I have a data frame which looks like:

   cat        split_me           <chr>      <chr>            1 MVHYM7693B c(1, 7)          2 ZRRBS1363E c(2, 7, 18)      3 ZXYLV2407F 3                4 HXPPE8608M 4                5 JDARX0644Q c(5, 19)         6 HDBOK8136L 6                7 DCJPS0833K c(1, 2, 7, 18)  

I can use the following to split the data:

splt <- to_split %>%    split(.$split_me) 

Which gives me a list of 19 elements. However the original data had 20 elements. The split which repeats itself is split c(5, 19). How can I ignore this repetition and split c(5, 19) twice?

I want to name the splits according to the cat column in to_split Therefore c(5, 19) will have different names (JDARX0644Q) and (BZRXF3978Z).

Data:

to_split <- structure(list(cat = c("MVHYM7693B", "ZRRBS1363E", "ZXYLV2407F",  "HXPPE8608M", "JDARX0644Q", "HDBOK8136L", "DCJPS0833K", "UGDYS1458B",  "ROQIP3617B", "HZMGG4347S", "EHESH8836T", "YGXZY0073I", "NMRDZ9798F",  "WXBKD9937H", "JEMQK6388P", "QQMSV0889M", "IBMJM4467Q", "IOIDB2993Q",  "BZRXF3978Z", "NJLNW3044Z"), split_me = c("c(1, 7)", "c(2, 7, 18)",  "3", "4", "c(5, 19)", "6", "c(1, 2, 7, 18)", "8", "9", "10",  "11", "12", "c(13, 18)", "14", "15", "16", "17", "c(2, 7, 13, 18)",  "c(5, 19)", "20")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,  -20L)) 

EDIT:

What I think is best for my data is to re-order the split_me column. At the moment the data looks like:

# A tibble: 20 x 2    cat        split_me           <chr>      <chr>            1 MVHYM7693B c(1, 7)          2 ZRRBS1363E c(2, 7, 18)      3 ZXYLV2407F 3                4 HXPPE8608M 4                5 JDARX0644Q c(5, 19)         6 HDBOK8136L 6                7 DCJPS0833K c(1, 2, 7, 18)   8 UGDYS1458B 8                9 ROQIP3617B 9               10 HZMGG4347S 10              11 EHESH8836T 11              12 YGXZY0073I 12              13 NMRDZ9798F c(13, 18)       14 WXBKD9937H 14              15 JEMQK6388P 15              16 QQMSV0889M 16              17 IBMJM4467Q 17              18 IOIDB2993Q c(2, 7, 13, 18) 19 BZRXF3978Z c(5, 19)        20 NJLNW3044Z 20 

Here 1 in the c(1, 7) corresponds to row 1 of the data and 7 corresponds to row 7. I think I should re-arrange the column such that:

row 2 does not change. I.e. c(2, 7, 18) - the 2 is first and thus does not need to change. Row 5 also does not change since the 5 in the c(5, 19) is first and matches the row number 5.

Row 7 changes. Originally it is c(1, 2, 7, 18) however 7 is the third in the sequence, I want to move it to the first. So c(7, 1, 2, 18).

Row 13 does not change. Row 18 changes - original c(2, 7, 13, 18) desired output c(18, 2, 7, 13) Row 19 changes - original c(5, 19) desired output c(19, 5).

This should fix the duplicate issue and problems I have later on with the code. For example I am trying to get it such that for splits c(5, 19): the data contained in 5 will be arranged or above the data in 19 (in a data frame). Then for split c(19, 5) the data in 19 will be above the data in 5. (I hope this makes sense)

     
     
     

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

Puede split Basado en cat Nombrará automáticamente la lista con cat

  split(to_split, to_split$cat)   

En SELECT 'If the alternative hypothesis is as Ha:µ ≠µ0'; 0 que se puede hacer usando SELECT 'If the alternative hypothesis is as Ha:µ ≠µ0'; 1111 pero requeriría agregar nombres por separado

  SELECT 'If the alternative   hypothesis is as  Ha:µ ≠µ0'; 2  
 

You can split based on cat column which will automatically name the list with cat

split(to_split, to_split$cat) 

In dplyr that can be done using group_split but it would require to add names separately

library(dplyr) to_split %>% group_split(cat) %>% setNames(to_split$cat)  
 
 
         
         
2
 
vote

Puede intentar pegar y luego dividirlo, por lo que SELECT 'If the alternative hypothesis is as Ha:µ ≠µ0'; 3 también se incluirá, es decir.

  SELECT 'If the alternative   hypothesis is as  Ha:µ ≠µ0'; 4  

que tiene una longitud de 20,

  SELECT 'If the alternative   hypothesis is as  Ha:µ ≠µ0'; 5  

Aquí está con SELECT 'If the alternative hypothesis is as Ha:µ ≠µ0'; 660 MÉTODO,

  SELECT 'If the alternative   hypothesis is as  Ha:µ ≠µ0'; 7  

Los nombres después del SELECT 'If the alternative hypothesis is as Ha:µ ≠µ0'; 8 Split son del formulario SELECT 'If the alternative hypothesis is as Ha:µ ≠µ0'; 9 . Para nombrar la lista basada únicamente en su variable split20 , entonces podemos hacerlo,

  If the alternative hypothesis is as Ha:µ ?µ0 1  

Sin embargo, si tiene duplicados en general,

  If the alternative hypothesis is as Ha:µ ?µ0 2  
 

You can try pasting and then splitting so cat will also be included, i.e.

split(to_split, do.call(paste, to_split))  

which has length of 20,

length(split(to_split, do.call(paste, to_split))) #[1] 20 

Here it is with dplyr method,

library(dplyr)  to_split %>%   group_by_all() %>%   group_split() 

The names after the do.call(...) split are of the form cat split_me. To name the list based only on your cat variable, then we can do,

setNames(the_list_after_spliting, to_split$cat) 

However, If you have overall duplicates then,

setNames(the_list_after_spliting,           to_split$cat[!duplicated(do.call(paste,to_split))]) 
 
 

Relacionados problema

3  Shiny: Dplyr devuelve los mensajes de error  ( Shiny dplyr returns error messages ) 
Uso de --------------------------- Error --------------------------- File: "G:programmingv2wwbasewindow.h" Function: _fakeWndProc Line: 61 Error Code: 1410 E...

1  Uso de R y PURR para unirse a varios cuadros de datos utilizando una lista de listas con PMAP  ( Using r and purrr to join multiple dataframes using a list of lists with pmap ) 
Estoy tratando de unir los cuadros de datos que están incrustados en una lista con PMAP. BasicDBObject query = new BasicDBObject("metadata", new BasicDBObj...

1  Filtrando cada columna de un marco de datos un PUT NA para valores inigualables  ( Filtering each column of a data frame an put na for unmatched values ) 
Tengo una tabla de la siguiente manera: [,1] [,2] [,3] [,4] [,5] [1,] a A 0.06 0.31 -1.5 [2,] b B -0.75 0.2 0.02 [3,] ...

0  Expandir los programas de datos de datos `X` no es un error de secuencia regular  ( Expand dataframe shows x is not a regular sequence error ) 
Estoy teniendo problemas para expandir el siguiente contexto de datos. CREATE TABLE Cal_3Month ( ColID int, ColDate timestamp, ColValue bigint ); INSERT I...

0  R: Convierta la frecuencia al porcentaje con solo un número seleccionado de columnas  ( R convert frequency to percentage with only a selected number of columns ) 
Me gustaría convertir un contexto de datos lleno de frecuencias en un contexto de datos lleno de porcentaje por fila usando dplyr. Mi conjunto de datos tien...

0  ¿Cómo uso DPLYR para filtrar a una variable global predefinida?  ( How do i use dplyr to filter to a pre defined global variable ) 
Digamos que tengo el siguiente escenario. Mi conjunto de datos cambia mensualmente a donde usa el último día del mes + "registro creado". Para evitar cambia...

0  Cambiar columna basada en casos coincidentes en R  ( Change column based on matched cases in r ) 
Tengo un archivo. Frame que se ve así data=data.frame(time=c(1,1,0.5,1), columnB= c(1,2,5,6), columnC= c(1,2,2,5)) time columnB columnC 1.0 ...

0  ¿Hay alguna manera de optimizar esta declaración: selección de valores de un vector  ( Is there a way to optimize this statement selection of values from a vector ) 
Tengo este código y desde longitud (nodos_data_frame_name) es en realidad alrededor de 4398886 y puede ser mucho más grande y tengo que ejecutar esta oper...

0  Uniéndose a dos marcos de datos con IDEED_JOIN () [DUPLICADO]  ( Joining two data frames with left join ) 
Esta pregunta ya tiene respuestas aquí : Cómo unirse (fusionar) Marcos de datos (interiores, exterio...

4  Mutate una variable con rizado-rizado [duplicado]  ( Mutate a variable with curly curly ) 
Esta pregunta ya tiene respuestas aquí : Use los nombres de variables dinámicos en `dplyr` ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos