Суммируйте один столбец, сгруппированный по другому в R - PullRequest
0 голосов
/ 26 ноября 2018

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

У меня есть таблица данных:

Column 1: Sex (M/F)
Column 2 Plays Sport (Y/N)

Мне нужна сводная таблица, которая показывает:

Sex | Plays Sport Yes | Plays Sport No

Я не могу на всю жизнь понять, как это сделать с помощью dplyr.

Решение в базе rбудет предпочтительным, если не слишком сложным.

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Вы можете использовать table

# dummy data
df1 <- data.frame(Sex = c("M", "M", "F", "M", "M", "F"),
                Sport = c("N", "Y", "N", "N", "N", "N"), stringsAsFactors = FALSE)
df1
#  Sex Sport
#1   M     N
#2   M     Y
#3   F     N
#4   M     N
#5   M     N
#6   F     N

Результат

table(df1)
#   Sport
#Sex N Y
#  F 2 0
#  M 3 1

Вот еще один вариант с reshape2::dcast

reshape2::dcast(df1, Sex ~ paste0("Sport_", Sport), 
                fun.aggregate = length # default 
                )

Результат

#  Sex Sport_N Sport_Y
#1   F       2       0
#2   M       3       1
0 голосов
/ 26 ноября 2018

Мы можем использовать count с spread

library(tidyverse)
df1 %>%
   count(Sex, Sport) %>% 
   spread(Sport, n, fill = 0)
# A tibble: 2 x 3
#  Sex       N     Y
#   <chr> <dbl> <dbl>
#1 F         2     0
#2 M         3     1

data

df1 <- data.frame(Sex = c("M", "M", "F", "M", "M", "F"),
            Sport = c("N", "Y", "N", "N", "N", "N"), stringsAsFactors = FALSE)
0 голосов
/ 26 ноября 2018

Используя dplyr и делая некоторые предположения о том, что именно вы ищете:

library(tidyverse)

data <- data.frame(Sex = c("M", "F")[rbinom(10, 1, 0.5) + 1],
                   PlaysSport = c(TRUE, FALSE)[rbinom(10, 1, 0.5) + 1])

data %>% 
  group_by(Sex, PlaysSport) %>% 
  summarise(count = n())

# A tibble: 4 x 3
# Groups:   Sex [?]
      Sex   PlaysSport count
    <fctr>    <lgl>    <int>
1      F      FALSE     1
2      F       TRUE     3
3      M      FALSE     4
4      M       TRUE     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...