首页 > 解决方案 > {tidyr} 扩展函数删除行的问题

问题描述

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

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)

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

标签: rtidyr

解决方案


我们可以创建一个列,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))

推荐阅读