【问题标题】:Problem with {tidyr} spread function dropping rows{tidyr} 扩展函数删除行的问题
【发布时间】:2020-04-13 21:11:48
【问题描述】:

在尝试创建虚拟变量时,会出现由于某种原因合并行的问题。这导致一行与两组相关联,因此不是虚拟变量。以下代码重现了该问题。

df = data.frame(group = c(4, 2, 3, 3, 4, 4), time = c(0.1, 0.2, 0.3, 0.3, 0.3, 0.4), age = c(65, 86, 49, 71, 71, 76), year = c(72, 74, 72, 76, 76, 77), death = c(1, 1, 1, 1, 1, 1))

df %>% mutate(i=1) %>% spread(group, i, fill=0)

运行代码后,您可以看到有一行被合并,从而导致一个主题同时位于两个组中。这是代码错误还是函数错误?

【问题讨论】:

标签: r tidyr


【解决方案1】:

我们可以用row_number() 创建一个列,因为有一些重复的行

library(dplyr)
library(tidyr)
df %>% 
    mutate(i=1, rn = row_number()) %>% 
    spread(group, i, fill=0) %>%
    select(-rn)

或使用pivot_wider

df %>%
   mutate(rn = row_number(), i = 1) %>%
   pivot_wider(names_from = group, values_from = i, values_fill = list(i = 0))

【讨论】:

  • 啊,我现在看到了这个问题。非常感谢您的宝贵时间。我会在 9 分钟内接受这个答案。
猜你喜欢
  • 2018-08-07
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2015-09-17
  • 2012-05-27
  • 2021-06-02
相关资源
最近更新 更多