Как сложить столбцы фрейма данных в 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.