Использовать plyr для вычисления полей

У меня есть кадр данных с чем-то вроде следующей структуры:

Trial Index    Condition1    Condition2    Measures
1              A             Y             ...
2              A             Y             ...        
3              B             Y             ...
4              B             Y             ...
5              A             Z             ...
6              A             Z             ...        
7              B             Z             ...
8              B             Z             ...

Я хотел бы вычислить ряд суммарных мер для каждой комбинации Условий1 и Условие2, и для полей. Я могу использовать несколько вызовов для ddply для этого, но мне было интересно, есть ли простой способ получить из него одну структуру данных, например:

Condition1    Condition2    Mean    Median    ....
A             Y             ...     ...       ....
A             Z             ...     ...       ....
A             -             ...     ...       ....             
B             Y             ...     ...       ....
B             Z             ...     ...       ....
B             -             ...     ...       ....
-             Y             ...     ...       ....
-             Z             ...     ...       ....
1
Это более или менее то, что у меня уже есть. Из-за этого я хочу, чтобы функция также вычисляла поля. среднее и медианное из всех образцов в Condition1. Вышеприведенный код дает только среднюю и среднюю для каждой комбинации Condition1 и Condition2.
добавлено автор Nathan, источник
Это более или менее то, что у меня уже есть. Из-за этого я хочу, чтобы функция также вычисляла поля. среднее и медианное из всех образцов в Condition1. Вышеприведенный код дает только среднюю и среднюю для каждой комбинации Condition1 и Condition2.
добавлено автор Nathan, источник
Это было бы средним значением для всех образцов. Я хотел бы, чтобы среднее из всех образцов в Condition1. Это само по себе довольно просто, но я бы хотел, чтобы я мог получить каждое среднее (среднее из всех выборок, среднее из всех выборок в условии 1, среднее из всех выборок в условии 2, средство выборок в каждой комбинации условия 1 и условие2) в один и тот же фрейм данных, причем код как можно более экономный.
добавлено автор Nathan, источник
Это было бы средним значением для всех образцов. Я хотел бы, чтобы среднее из всех образцов в Condition1. Это само по себе довольно просто, но я бы хотел, чтобы я мог получить каждое среднее (среднее из всех выборок, среднее из всех выборок в условии 1, среднее из всех выборок в условии 2, средство выборок в каждой комбинации условия 1 и условие2) в один и тот же фрейм данных, причем код как можно более экономный.
добавлено автор Nathan, источник
Это было бы средним значением для всех образцов. Я хотел бы, чтобы среднее из всех образцов в Condition1. Это само по себе довольно просто, но я бы хотел, чтобы я мог получить каждое среднее (среднее из всех выборок, среднее из всех выборок в условии 1, среднее из всех выборок в условии 2, средство выборок в каждой комбинации условия 1 и условие2) в один и тот же фрейм данных, причем код как можно более экономный.
добавлено автор Nathan, источник
Это то, о чем я думал. Спасибо, что пропустили это!
добавлено автор Nathan, источник
Это то, о чем я думал. Спасибо, что пропустили это!
добавлено автор Nathan, источник
Это то, о чем я думал. Спасибо, что пропустили это!
добавлено автор Nathan, источник

6 ответы

За эти годы были изданы жалобы о трудностях R с «отчетностью». На самом деле нет встроенных функций для вставки промежуточных итогов (или вспомогательных средств) и итоговых итогов в таблицах. Интерфейсы с драйверами SQL могут обеспечить некоторые из средств правовой защиты, но я бы не назвал это простым, и поскольку вы не используете понятия базы данных для постановки своего вопроса, я предполагаю, что это не хорошо для вас. Это подход с базой-R, использующий суммы в качестве результата из предыдущего ответа:

R: calculating column sums & row sums as an aggregation from a dataframe

Возможно, есть прогресс для прогресса, если вы создали массив с маргиналами и затем «сплющили» его с помощью ftable . Глянь сюда:

Группировка и сортировка в R

Duncan Murdoch содержит пакет tables . Скорее всего, я ближе всего к ответу. Но я думаю, что ответ на конкретный вопрос «есть ли какой-то простой способ» получить R-объект с запрошенной сложностью ... нет ... по крайней мере, о котором я знаю.

3
добавлено

За эти годы были изданы жалобы о трудностях R с «отчетностью». На самом деле нет встроенных функций для вставки промежуточных итогов (или вспомогательных средств) и итоговых итогов в таблицах. Интерфейсы с драйверами SQL могут обеспечить некоторые из средств правовой защиты, но я бы не назвал это простым, и поскольку вы не используете понятия базы данных для постановки своего вопроса, я предполагаю, что это не хорошо для вас. Это подход с базой-R, использующий суммы в качестве результата из предыдущего ответа:

R: calculating column sums & row sums as an aggregation from a dataframe

Возможно, есть прогресс для прогресса, если вы создали массив с маргиналами и затем «сплющили» его с помощью ftable . Глянь сюда:

Группировка и сортировка в R

Duncan Murdoch содержит пакет tables . Скорее всего, я ближе всего к ответу. Но я думаю, что ответ на конкретный вопрос «есть ли какой-то простой способ» получить R-объект с запрошенной сложностью ... нет ... по крайней мере, о котором я знаю.

3
добавлено

За эти годы были изданы жалобы о трудностях R с «отчетностью». На самом деле нет встроенных функций для вставки промежуточных итогов (или вспомогательных средств) и итоговых итогов в таблицах. Интерфейсы с драйверами SQL могут обеспечить некоторые из средств правовой защиты, но я бы не назвал это простым, и поскольку вы не используете понятия базы данных для постановки своего вопроса, я предполагаю, что это не хорошо для вас. Это подход с базой-R, использующий суммы в качестве результата из предыдущего ответа:

R: calculating column sums & row sums as an aggregation from a dataframe

Возможно, есть прогресс для прогресса, если вы создали массив с маргиналами и затем «сплющили» его с помощью ftable . Глянь сюда:

Группировка и сортировка в R

Duncan Murdoch содержит пакет tables . Скорее всего, я ближе всего к ответу. Но я думаю, что ответ на конкретный вопрос «есть ли какой-то простой способ» получить R-объект с запрошенной сложностью ... нет ... по крайней мере, о котором я знаю.

3
добавлено

@DWin прав, tables может быть правильным ключом здесь. Ниже приведен пример:

library(tables)
d1 <- data.frame(id = 1:10, c1 = sample(c("a","b"), 10, replace = TRUE), 
        c2 = sample(c("c", "d"), 10, replace = TRUE), measures = rnorm(1:10))
t1 <- tabular((c1 + c2 + c1*c2 +1) ~ (measures)*(mean + median), data = d1)

             measures        
             mean     median 
      c1 a   -0.33306 -0.1801
         b   -0.54121 -0.6381
      c2 c   -0.04862  0.1647
         d   -0.69615 -0.8129
 c1 a c2 c   -0.26195 -0.2619
         d   -0.38047 -0.1801
    b    c    0.16472  0.1647
         d   -1.01182 -1.1863
         All -0.43713 -0.4678

Тем не менее, требуется некоторое время, чтобы войти в синтаксис; с плюсовой стороны он предоставляет функциональные возможности для экспорта таблиц в LaTeX. Если вам не нужна/нужна вся маркировка в этом табличном объекте, вы можете извлечь значения через as.matrix (t1, format = as.numeric) .

NOTE: c1 and c2 on the left hand side of the formula have to be factor for this to work

3
добавлено
Я могу быть «правильным», но вы должны получить всю благодарность за полностью обработанный пример.
добавлено автор 42-, источник
Спасибо за пример!
добавлено автор Nathan, источник

@DWin прав, tables может быть правильным ключом здесь. Ниже приведен пример:

library(tables)
d1 <- data.frame(id = 1:10, c1 = sample(c("a","b"), 10, replace = TRUE), 
        c2 = sample(c("c", "d"), 10, replace = TRUE), measures = rnorm(1:10))
t1 <- tabular((c1 + c2 + c1*c2 +1) ~ (measures)*(mean + median), data = d1)

             measures        
             mean     median 
      c1 a   -0.33306 -0.1801
         b   -0.54121 -0.6381
      c2 c   -0.04862  0.1647
         d   -0.69615 -0.8129
 c1 a c2 c   -0.26195 -0.2619
         d   -0.38047 -0.1801
    b    c    0.16472  0.1647
         d   -1.01182 -1.1863
         All -0.43713 -0.4678

Тем не менее, требуется некоторое время, чтобы войти в синтаксис; с плюсовой стороны он предоставляет функциональные возможности для экспорта таблиц в LaTeX. Если вам не нужна/нужна вся маркировка в этом табличном объекте, вы можете извлечь значения через as.matrix (t1, format = as.numeric) .

NOTE: c1 and c2 on the left hand side of the formula have to be factor for this to work

3
добавлено
Я могу быть «правильным», но вы должны получить всю благодарность за полностью обработанный пример.
добавлено автор 42-, источник
Спасибо за пример!
добавлено автор Nathan, источник

@DWin прав, tables может быть правильным ключом здесь. Ниже приведен пример:

library(tables)
d1 <- data.frame(id = 1:10, c1 = sample(c("a","b"), 10, replace = TRUE), 
        c2 = sample(c("c", "d"), 10, replace = TRUE), measures = rnorm(1:10))
t1 <- tabular((c1 + c2 + c1*c2 +1) ~ (measures)*(mean + median), data = d1)

             measures        
             mean     median 
      c1 a   -0.33306 -0.1801
         b   -0.54121 -0.6381
      c2 c   -0.04862  0.1647
         d   -0.69615 -0.8129
 c1 a c2 c   -0.26195 -0.2619
         d   -0.38047 -0.1801
    b    c    0.16472  0.1647
         d   -1.01182 -1.1863
         All -0.43713 -0.4678

Тем не менее, требуется некоторое время, чтобы войти в синтаксис; с плюсовой стороны он предоставляет функциональные возможности для экспорта таблиц в LaTeX. Если вам не нужна/нужна вся маркировка в этом табличном объекте, вы можете извлечь значения через as.matrix (t1, format = as.numeric) .

NOTE: c1 and c2 on the left hand side of the formula have to be factor for this to work

3
добавлено
Я могу быть «правильным», но вы должны получить всю благодарность за полностью обработанный пример.
добавлено автор 42-, источник
Спасибо за пример!
добавлено автор Nathan, источник