Как сделать значения одного столбца именами главных столбцов с помощью spread () - PullRequest
1 голос
/ 19 апреля 2020

Мне нужно запустить тест хи-квадрат, поэтому мне нужно, чтобы уровни одного столбца (пола) были именами столбцов для вывода различных переменных. Вот некоторые данные:

test <- data.frame(gender = as.character(sample(c('male','female'),10, replace = T)),
           test1 = sample(c(1:10)),
           test2 = sample(1:5,10 , replace = T))
> test
   gender test1 test2
1  female     2     2
2    male     9     1
3    male     4     4
4  female     8     1
5  female     5     4
6  female     3     3
7  female     7     3
8  female     1     1
9    male    10     2
10   male     6     2

Я использовал следующую строку кода с dplyr :: spread (), но она дает мне ошибку:

test %>% spread(gender,test1)
Error: Each row of output must be identified by a unique combination of keys.

Я следовал всем примеры, которые dplyr предоставляет с использованием collect () и spread (), но ничего не работает. Если у вас есть какие-либо советы, пожалуйста, дайте мне знать. Вот мой желаемый результат:

> goal
  male female
1   10      3
2    1      4
3    5     10
4    3      9
5    6      7

1 Ответ

1 голос
/ 19 апреля 2020

Мы можем создать столбец последовательности, сгруппированный по полу, чтобы создать уникальный идентификатор, а затем использовать `spread

library(dplyr)
library(tidyr)
test %>% 
    select(-test2) %>% 
    group_by(gender) %>% 
    mutate(rn = row_number()) %>% 
    spread(gender, test1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...