Какое соединение мне нужно здесь, в R? - PullRequest
0 голосов
/ 03 мая 2018

Пожалуйста, помогите мне сначала прояснить тему для этого вопроса. Кстати, я не знаю правильной R-терминологии для того, что мне нужно здесь. Является ли слово "присоединиться" правильным словом?

set.seed(0)
df <- data.frame(a = sample(c(T,F), 10, replace=TRUE),
                 b = sample(c(T,F), 10, replace=TRUE),
                 c = sample(c(T,F), 10, replace=TRUE),
                 d = sample(c(T,F), 10, replace=TRUE))

a <- addmargins(table(df$a))
b <- addmargins(table(df$b))
c <- addmargins(table(df$c))
d <- addmargins(table(df$d))

Это данные

FALSE  TRUE   Sum 
    7     3    10 

FALSE  TRUE   Sum 
    4     6    10 

FALSE  TRUE   Sum 
    4     6    10 

FALSE  TRUE   Sum 
    5     5    10 

И я хочу, чтобы данные выглядели так

   FALSE  TRUE   Sum 
a      7     3    10 
b      4     6    10 
c      4     6    10 
d      5     5    10 

Звучит просто, не так ли? Я использовал ddply в прошлом. Но я не понимаю, как использовать ddply или что-то еще.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вот простой однострочный текст для выполнения команды таблицы и добавления полей:

addmargins(t(sapply(df, table)))

#or this for just the row sums:
addmargins(t(sapply(df, table)), 2)

sapply для применения функции table к каждому столбцу.
t для транспонирования результатов
addmargins для сумм строк / столбцов

0 голосов
/ 03 мая 2018

Это просто укладка строк, вам нужно rbind (для «связывания» строк вместе. cbind - это эквивалент для столбцов).

rbind(a, b, c, d)
#   FALSE TRUE Sum
# a     7    3  10
# b     4    6  10
# c     4    6  10
# d     5    5  10

A объединение обычно выполняется, когда у вас есть несколько общих столбцов, но есть несколько разных столбцов, и вы хотите объединить данные таким образом, чтобы общие столбцы выстраивались в линию и сохранялись разные соответствующие разные столбцы. Например, если у вас был один фрейм данных о людях и адресах и другой фрейм данных о людях и заказах, вы бы объединили их вместе, чтобы увидеть, какой адрес соответствует какому заказу. В базе R соединения выполняются командой merge.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...