如何使用spread()使一列的值成为主列名

如何使用spread()使一列的值成为主列名,r,dplyr,spread,R,Dplyr,Spread,我需要运行卡方检验,所以我需要一列的级别(性别)作为不同变量输出的列名。以下是一些数据: 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

我需要运行卡方检验,所以我需要一列的级别(性别)作为不同变量输出的列名。以下是一些数据:

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使用gather()和spread()提供的所有示例,但没有任何效果。如果你有什么建议,请告诉我。以下是我想要的结果:

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

我们可以创建一个按性别分组的序列列,以生成唯一标识符,然后使用` spread'

library(dplyr)
library(tidyr)
test %>% 
    select(-test2) %>% 
    group_by(gender) %>% 
    mutate(rn = row_number()) %>% 
    spread(gender, test1)

你的例子。将test1显示为具有雌性1而非雄性1
library(dplyr)
library(tidyr)
test %>% 
    select(-test2) %>% 
    group_by(gender) %>% 
    mutate(rn = row_number()) %>% 
    spread(gender, test1)