R根据另一列中的因素创建新列

R Creating new columns based on factors in another column

我是 R 新手;尝试做一些基本的数据操作。然而,我已经被这个问题困扰了2天。

假设我有一个如下所示的数据框,它包含 60 个 obs,其中“类别”列中的每个变量都具有相同的数量:

  category cond 
1      A  1
2      B  2
3      C  1
4      D  1
5      E  1
6      F  3
7      A  5
8      B  0
..     .. ..
60     F  2

所需的新数据框(由“cond”列):

    A  B  C  D  E  F
1   1  2  1  1  0  3
2   5  0  .  .  .  .
3   .  .  .  .  .  .
.   .  .  .  .  .  .
.   .  .  .  .  .  .
10  .  .  .  .  .  2

由于第一个数据框有 60 行(“类别”列中的所有变量的数量相等 60/6=10)新数据框有 10 行。

我试过这个例子

A<-old%>% filter(category =="A")%>%summarise(`cond`)
B<-old%>% filter(category =="B")%>%summarise(`cond`)
new<-cbind(A,B)

... .. 这对我有用,但需要花费大量时间并更改列名,这是这个问题的另一部分。

提前致谢。

试试这个

df %>% group_by(category) %>% mutate(id = row_number()) %>% ungroup() %>% pivot_wider(id_cols = id, names_from = category, values_from = cond) %>% select(-id) 

你的预期结果有错字吗?

未经检验的猜测:

require(dplyr)
old %>%
spread(A,B) -> new