2014-02-10 2 views
0

У меня есть 4 колонки в кадре данныхсумма/средние разные столбцы

a <- data.frame(a=c(1,2,3,4), b=c(4,5,6,7), c=c(7,6,5,4), d=c(8,4,3,2)) 

Я хочу в среднем первые два столбца и последние два столбца, чтобы получить кадр один данных с двумя колонками же Nrows со средним из первых двух столбцов и двух последних столбцов

ожидается выход:

5 15 
7 10 
9 8 
11 6 
+0

можно дублировать здесь http://stackoverflow.com/questions/5559467/how-to-merge-two-columns-in- r-with-a-specific-symbol взглянуть, что он может сделать то, что вам нужно –

ответ

1

Чтобы воспроизвести ваш вывод (что сумма, не означает):

library(plyr) 
ddply(a, .(), summarise, first=a+b, second=c+d)[,-1] 

Он производит:

first second 
1  5  15 
2  7  10 
3  9  8 
4 11  6 

Чтобы data.frame со средними значениями:

ddply(a, .(), summarise, first=(a+b)/2, second=(c+d)/2)[,-1] 

Выход:

first second 
1 2.5 7.5 
2 3.5 5.0 
3 4.5 4.0 
4 5.5 3.0 

Если вы не знаете названия кода столбцы может следует изменить следующим образом:

ddply(a, .(), summarise, first=a[,1]+a[,2], second=a[,3]+a[,4])[,-1] 

Здесь вы получаете доступ к столбцам по его заказу. Кроме того, вы можете просто запустить names(a) <- letters[1:4] до ddply().

ddply - очень гибкая функция, вы можете указать переменные группировки в качестве второго аргумента и получить сгруппированные результаты. Но если дело обстоит так же просто, как и в вопросе вы можете позвонить summarise непосредственно:

summarise(a, first=a+b, second=c+d)     # if you know columns' names 
summarise(a, first=a[,1]+a[,2], second=a[,3]+a[,4]) # if you don't know columns' names 
+0

Спасибо, это сработало. но у меня нет имен столбцов. В качестве примера я привел выше. Все, что я знаю, чтобы добавить первые два столбца и последние два столбца. Как я могу передать эту информацию? – user1631306

+0

Просто выполните 'names (a) <- letters [1: 4]' перед 'ddply' для назначения имен – redmode

+0

@ user1631306, пожалуйста, см. Обновление – redmode

Смежные вопросы