Как сложить столбцы фрейма данных в R


Часто вам может понадобиться объединить два или более столбца фрейма данных в один столбец в R.

Например, вы можете перейти от этого:

person trial outcome1 outcome2
 A 1 7 4
 A 2 6 4
 B 1 6 5
 B 2 5 5
 C 1 4 3
 C 2 4 2

К этому:

person trial outcomes value
 A 1 outcome1 7
 A 2 outcome1 6
 B 1 outcome1 6
 B 2 outcome1 5
 C 1 outcome1 4
 C 2 outcome1 4
 A 1 outcome2 4
 A 2 outcome2 4
 B 1 outcome2 5
 B 2 outcome2 5
 C 1 outcome2 3
 C 2 outcome2 2

В этом руководстве объясняются два метода, которые вы можете использовать для этого в R.

Метод 1: используйте функцию стека в Base R

В следующем коде показано, как складывать столбцы с помощью функции стека в базе R:

#create original data frame
data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'),
 trial=c(1, 2, 1, 2, 1, 2),
 outcome1=c(7, 6, 6, 5, 4, 4),
 outcome2=c(4, 4, 5, 5, 3, 2))

#stack the third and fourth columns
cbind (data[1:2], stack (data[3:4]))

 person trial values ind
1 A 1 7 outcome1
2 A 2 6 outcome1
3 B 1 6 outcome1
4 B 2 5 outcome1
5 C 1 4 outcome1
6 C 2 4 outcome1
7 A 1 4 outcome2
8 A 2 4 outcome2
9 B 1 5 outcome2
10 B 2 5 outcome2
11 C 1 3 outcome2
12 C 2 2 outcome2

Способ 2: используйте функцию плавления от Reshape2

В следующем коде показано, как сложить столбцы с помощью функции плавления из библиотеки reshape2 :

#load library
library(reshape2)

#create original data frame
data <- data.frame(person=c('A', 'A', 'B', 'B', 'C', 'C'),
 trial=c(1, 2, 1, 2, 1, 2),
 outcome1=c(7, 6, 6, 5, 4, 4),
 outcome2=c(4, 4, 5, 5, 3, 2))

#melt columns of data frame
melt(data, id. var = c('person', 'trial'), variable.name = 'outcomes')

 person trial outcomes value
1 A 1 outcome1 7
2 A 2 outcome1 6
3 B 1 outcome1 6
4 B 2 outcome1 5
5 C 1 outcome1 4
6 C 2 outcome1 4
7 A 1 outcome2 4
8 A 2 outcome2 4
9 B 1 outcome2 5
10 B 2 outcome2 5
11 C 1 outcome2 3
12 C 2 outcome2 2

Полную документацию по функции Melt можно найти здесь .

Дополнительные ресурсы

Как переключить два столбца в R
Как переименовать столбцы в R
Как суммировать определенные столбцы в R