Подмножество из фрейма данных для формирования списка меньших фреймов данных

#r #list #dataframe #subset

Вопрос:

Мне интересно, как разделить свою игрушку data ниже, чтобы я получил список меньших данных.в каждом из которых содержится уникальная пара group в нем?

Мой desired_output показан ниже. Возможно ли такое подмножество в R ?

Поскольку это игрушка data , я высоко ценю функциональный ответ, в котором названия столбцов или их номера могут отличаться от этой игрушки data .

 m=  "  y group time outcome  7 a 1 A  3 a 0 B  6 a 1 B  5 b 0 A  9 b 1 A  4 b 0 B"  data lt;- read.table(text = m, h=T)   desired_output lt;- list(  data.frame(y = 5 , group = "b" , time = 0 , outcome = "A" ),  data.frame(y = c(7,9), group = c("a","b"), time = c(1,1), outcome = c("A","A")),  data.frame(y = c(3,4), group = c("a","b"), time = c(0,0), outcome = c("A","A")),  data.frame(y = 6 , group = "a" , time = 1 , outcome = "B"))  [[1]]  y group time outcome 1 5 b 0 A  [[2]]  y group time outcome 1 7 a 1 A 2 9 b 1 A  [[3]]  y group time outcome 1 3 a 0 A 2 4 b 0 A  [[4]]  y group time outcome 1 6 a 1 B    

Комментарии:

1. Что вы имеете в виду под уникальной парой групп? Перестановка или комбинация? Для меня ваш список[2] и список[3] имеют одинаковое групповое сопряжение, поэтому неясно, в чем разница. Также в списке[1] и списке[4] даже нет «пары» групп …?

2. @tjebo, если вы посмотрите на мой desired_output , вы увидите, что все возможные group значения всегда сопоставляются , например, list[[2]] и list[[3]] , в то время как другие переменные (в этой игрушке data outcome и time ) остаются для них одинаковыми. Когда group значения не могут быть сопоставлены (как в list[[1]] и list[[4]] ), данные возвращаются нетронутыми.

Ответ №1:

Предполагая, что вопрос заключается в том, чтобы разделить входные данные на строки, у которых одинаковое время и результат, мы можем использовать split следующее. Никакие пакеты не используются.

 split(data, data[3:4])  

дающий:

 
 #r #list #dataframe #subset



Вопрос:

Мне интересно, как разделить свою игрушку data ниже, чтобы я получил список меньших данных.в каждом из которых содержится уникальная пара group в нем? Мой desired_output показан ниже. Возможно ли такое подмножество в R ? Поскольку это игрушка data , я высоко ценю функциональный ответ, в котором названия столбцов или их номера могут отличаться от этой игрушки data .
 m=  "  y group time outcome  7 a 1 A  3 a 0 B  6 a 1 B  5 b 0 A  9 b 1 A  4 b 0 B"  data lt;- read.table(text = m, h=T)   desired_output lt;- list(  data.frame(y = 5 , group = "b" , time = 0 , outcome = "A" ),  data.frame(y = c(7,9), group = c("a","b"), time = c(1,1), outcome = c("A","A")),  data.frame(y = c(3,4), group = c("a","b"), time = c(0,0), outcome = c("A","A")),  data.frame(y = 6 , group = "a" , time = 1 , outcome = "B"))  [[1]]  y group time outcome 1 5 b 0 A  [[2]]  y group time outcome 1 7 a 1 A 2 9 b 1 A  [[3]]  y group time outcome 1 3 a 0 A 2 4 b 0 A  [[4]]  y group time outcome 1 6 a 1 B    

Комментарии:

1. Что вы имеете в виду под уникальной парой групп? Перестановка или комбинация? Для меня ваш список[2] и список[3] имеют одинаковое групповое сопряжение, поэтому неясно, в чем разница. Также в списке[1] и списке[4] даже нет "пары" групп ...?

2. @tjebo, если вы посмотрите на мой desired_output , вы увидите, что все возможные group значения всегда сопоставляются , например, list[[2]] и list[[3]] , в то время как другие переменные (в этой игрушке data outcome и time ) остаются для них одинаковыми. Когда group значения не могут быть сопоставлены (как в list[[1]] и list[[4]] ), данные возвращаются нетронутыми.

Ответ №1:

Предполагая, что вопрос заключается в том, чтобы разделить входные данные на строки, у которых одинаковое время и результат, мы можем использовать split следующее. Никакие пакеты не используются.

 split(data, data[3:4])  

дающий:

0.A` y group time outcome 4 5 b 0 A

#r #list #dataframe #subset

Вопрос:

Мне интересно, как разделить свою игрушку data ниже, чтобы я получил список меньших данных.в каждом из которых содержится уникальная пара group в нем?

Мой desired_output показан ниже. Возможно ли такое подмножество в R ?

Поскольку это игрушка data , я высоко ценю функциональный ответ, в котором названия столбцов или их номера могут отличаться от этой игрушки data .

 m=  "  y group time outcome  7 a 1 A  3 a 0 B  6 a 1 B  5 b 0 A  9 b 1 A  4 b 0 B"  data lt;- read.table(text = m, h=T)   desired_output lt;- list(  data.frame(y = 5 , group = "b" , time = 0 , outcome = "A" ),  data.frame(y = c(7,9), group = c("a","b"), time = c(1,1), outcome = c("A","A")),  data.frame(y = c(3,4), group = c("a","b"), time = c(0,0), outcome = c("A","A")),  data.frame(y = 6 , group = "a" , time = 1 , outcome = "B"))  [[1]]  y group time outcome 1 5 b 0 A  [[2]]  y group time outcome 1 7 a 1 A 2 9 b 1 A  [[3]]  y group time outcome 1 3 a 0 A 2 4 b 0 A  [[4]]  y group time outcome 1 6 a 1 B    

Комментарии:

1. Что вы имеете в виду под уникальной парой групп? Перестановка или комбинация? Для меня ваш список[2] и список[3] имеют одинаковое групповое сопряжение, поэтому неясно, в чем разница. Также в списке[1] и списке[4] даже нет "пары" групп ...?

2. @tjebo, если вы посмотрите на мой desired_output , вы увидите, что все возможные group значения всегда сопоставляются , например, list[[2]] и list[[3]] , в то время как другие переменные (в этой игрушке data outcome и time ) остаются для них одинаковыми. Когда group значения не могут быть сопоставлены (как в list[[1]] и list[[4]] ), данные возвращаются нетронутыми.

Ответ №1:

Предполагая, что вопрос заключается в том, чтобы разделить входные данные на строки, у которых одинаковое время и результат, мы можем использовать split следующее. Никакие пакеты не используются.

 split(data, data[3:4])  

дающий:

1.A` y group time outcome 1 7 a 1 A 5 9 b 1 A

#r #list #dataframe #subset

Вопрос:

Мне интересно, как разделить свою игрушку data ниже, чтобы я получил список меньших данных.в каждом из которых содержится уникальная пара group в нем?

Мой desired_output показан ниже. Возможно ли такое подмножество в R ?

Поскольку это игрушка data , я высоко ценю функциональный ответ, в котором названия столбцов или их номера могут отличаться от этой игрушки data .

 m=  "  y group time outcome  7 a 1 A  3 a 0 B  6 a 1 B  5 b 0 A  9 b 1 A  4 b 0 B"  data lt;- read.table(text = m, h=T)   desired_output lt;- list(  data.frame(y = 5 , group = "b" , time = 0 , outcome = "A" ),  data.frame(y = c(7,9), group = c("a","b"), time = c(1,1), outcome = c("A","A")),  data.frame(y = c(3,4), group = c("a","b"), time = c(0,0), outcome = c("A","A")),  data.frame(y = 6 , group = "a" , time = 1 , outcome = "B"))  [[1]]  y group time outcome 1 5 b 0 A  [[2]]  y group time outcome 1 7 a 1 A 2 9 b 1 A  [[3]]  y group time outcome 1 3 a 0 A 2 4 b 0 A  [[4]]  y group time outcome 1 6 a 1 B    

Комментарии:

1. Что вы имеете в виду под уникальной парой групп? Перестановка или комбинация? Для меня ваш список[2] и список[3] имеют одинаковое групповое сопряжение, поэтому неясно, в чем разница. Также в списке[1] и списке[4] даже нет "пары" групп ...?

2. @tjebo, если вы посмотрите на мой desired_output , вы увидите, что все возможные group значения всегда сопоставляются , например, list[[2]] и list[[3]] , в то время как другие переменные (в этой игрушке data outcome и time ) остаются для них одинаковыми. Когда group значения не могут быть сопоставлены (как в list[[1]] и list[[4]] ), данные возвращаются нетронутыми.

Ответ №1:

Предполагая, что вопрос заключается в том, чтобы разделить входные данные на строки, у которых одинаковое время и результат, мы можем использовать split следующее. Никакие пакеты не используются.

 split(data, data[3:4])  

дающий:

0.B` y group time outcome 2 3 a 0 B 6 4 b 0 B

#r #list #dataframe #subset

Вопрос:

Мне интересно, как разделить свою игрушку data ниже, чтобы я получил список меньших данных.в каждом из которых содержится уникальная пара group в нем?

Мой desired_output показан ниже. Возможно ли такое подмножество в R ?

Поскольку это игрушка data , я высоко ценю функциональный ответ, в котором названия столбцов или их номера могут отличаться от этой игрушки data .

 m=  "  y group time outcome  7 a 1 A  3 a 0 B  6 a 1 B  5 b 0 A  9 b 1 A  4 b 0 B"  data lt;- read.table(text = m, h=T)   desired_output lt;- list(  data.frame(y = 5 , group = "b" , time = 0 , outcome = "A" ),  data.frame(y = c(7,9), group = c("a","b"), time = c(1,1), outcome = c("A","A")),  data.frame(y = c(3,4), group = c("a","b"), time = c(0,0), outcome = c("A","A")),  data.frame(y = 6 , group = "a" , time = 1 , outcome = "B"))  [[1]]  y group time outcome 1 5 b 0 A  [[2]]  y group time outcome 1 7 a 1 A 2 9 b 1 A  [[3]]  y group time outcome 1 3 a 0 A 2 4 b 0 A  [[4]]  y group time outcome 1 6 a 1 B    

Комментарии:

1. Что вы имеете в виду под уникальной парой групп? Перестановка или комбинация? Для меня ваш список[2] и список[3] имеют одинаковое групповое сопряжение, поэтому неясно, в чем разница. Также в списке[1] и списке[4] даже нет "пары" групп ...?

2. @tjebo, если вы посмотрите на мой desired_output , вы увидите, что все возможные group значения всегда сопоставляются , например, list[[2]] и list[[3]] , в то время как другие переменные (в этой игрушке data outcome и time ) остаются для них одинаковыми. Когда group значения не могут быть сопоставлены (как в list[[1]] и list[[4]] ), данные возвращаются нетронутыми.

Ответ №1:

Предполагая, что вопрос заключается в том, чтобы разделить входные данные на строки, у которых одинаковое время и результат, мы можем использовать split следующее. Никакие пакеты не используются.

 split(data, data[3:4])  

дающий:

1.B` y group time outcome 3 6 a 1 B