R语言如何按日期宽化数据集 将group多水平转为布尔值列
R语言数据集宽化拆分group列解决方案
原有代码报错原因
- 管道结尾符号误写为
%,正确的dplyr管道符为%>%,且for循环属于独立流程控制语句,无法直接接入管道链承接传入的数据框 - for循环内未指定数据框引用范围,直接写
group无法识别对应数据框的列,赋值操作也没有指向数据框的对应行列 - 逻辑判断存在重复,两次写了
group == 3的条件,漏掉了group等于4的判断分支
最优实现方法(基于pivot_wider)
你之前用pivot_wider卡壳在值来源的设置,只需要先新增一个固定为TRUE的临时列作为取值源即可,完整代码如下:
# 加载依赖包,已安装可直接运行 library(tidyverse) # 宽化处理代码 df_wide <- df %>% mutate(val = TRUE) %>% pivot_wider( id_cols = c(x, date), names_from = group, names_prefix = "group", values_from = val, values_fill = FALSE )
运行后得到的df_wide就是你期望的结果格式。
简化手动赋值实现方法
如果不想用pivot_wider,也可以直接通过列逻辑判断实现,代码更直观:
df_wide <- df %>% mutate( group1 = group == 1, group2 = group == 2, group3 = group == 3, group4 = group == 4, group5 = group == 5 ) %>% select(-group)
内容的提问来源于stack exchange,提问作者xshbj
相关产品推荐
相关产品推荐

