【问题标题】:Mutate Command Making Multiple Columns Instead of Just One Column变异命令制作多列而不是一列
【发布时间】:2018-06-07 14:15:18
【问题描述】:

我正在尝试使用 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

我不想要额外的六列。我相信是因为gather命令后面跟着mutate,但我不是很肯定。

【问题讨论】:

  • 你能提供dput(Total.Cancer)吗?

标签: r dplyr


【解决方案1】:

您需要改变列名,而不是要添加的数据框。下面是一个玩具示例,我尝试跨数据帧添加 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)

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

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多