r - {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)
运行代码后,您可以看到有一行被合并,导致一个主题同时位于两个组中。这是代码错误还是函数错误?
解决方案
我们可以创建一个列,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))
推荐阅读
- progressive-web-apps - 工作箱 6:ReferenceError:未定义 swDest
- mysql - 用于计算“保留”库存项目的 SQL 查询
- c - 我的分号怎么了?(gcc 预处理器)
- javascript - 如何使 onclick Javascript 元素更改文本?
- swift - 自行调整大小的 UITableCell 中的 YTPlayerView
- vps - 在 VPS 中创建文件夹
- python - 安装 choco for react native 后 npm install 不起作用
- javascript - 在渲染之前重置 React 状态
- python - 递归查找给定字典列表的孩子的所有父母
- css - 如何让网格儿童在网格容器中“粘”在一起?