Mutate命令制作多列而不是一列

时间:2018-06-07 14:15:18

标签: r dplyr

我正在尝试使用mutate创建一个新列,但不是一个我得到7。

Output<-Total.Cancer%>%
  gather(Cancer,Total)%>%
  bind_cols(D.Total)%>%
  bind_cols(Death.Total)%>%
  mutate(Non.D.Total=Total-D.Total)

我得到的输出会创建多列Non.D.Total

     Cancer  Total Total.D   Non D Deaths   D Deaths   Non.D.Total.   Non.D.Total.  
1  Cancer 1  11111       111           1111         11          11111          11111
2  Cancer 2  111111      1111          11111        111         111111         111111
3  Cancer 3 111111      1111          11111        111         111111         111111
4  Cancer 4  11111       111           1111         11          11111          11111
5  Cancer 5  11111       111           1111         11          11111          11111
6  Cancer 6  11111       111           1111         11          11111          11111
7  Cancer 7 111111      1111          11111        111         111111         111111
  Non.D.Total. Non.D.Total. Non.D.Total. Non.D.Total. Non.D.Total.
1          11111          11111          11111          11111          11111
2         111111         111111         111111         111111         111111
3         111111         111111         111111         111111         111111
4          11111          11111          11111          11111          11111
5          11111          11111          11111          11111          11111
6          11111          11111          11111          11111          11111
7         115418         115418         115418         115418         115418

我不想要额外的六列。我相信这是因为变异命令后面跟着变异,但我并不积极。

1 个答案:

答案 0 :(得分:0)

您需要改变列名,而不是要添加的数据框。下面是一个玩具示例,我尝试在数据框中添加SN。

DF1 <- data.frame("SN" = 1203:1208)
DF2 <- data.frame("SN" = 1203:1208)

DF1 %>% bind_cols(DF2) %>% mutate(sum = DF1 + DF2)
     SN  SN1 sum. sum. sum. sum. sum. sum.
 1 1203 1203 2406 2406 2406 2406 2406 2406
 2 1204 1204 2408 2408 2408 2408 2408 2408

DF1 %>% bind_cols(DF2) %>% mutate(sum = SN + SN1)
    SN  SN1  sum
 1 1203 1203 2406

我不清楚你想要的结果是什么,但这样的事情可能就是你所需要的(?):

Output<-Total.Cancer%>%
gather(Cancer,Total)%>%
bind_cols(D.Total)%>%
bind_cols(Death.Total)%>%
mutate(Non.D.Total=Total-Total.D)

请注意,我们不是在调用数据框,而是调用数据框中要修改的列。