在R语言中将逗号分隔值拆分为列的实现方法求助
解决方案
首先模拟你的输入数据(还原样本结构):
library(tidyverse) # 构造与你样本一致的数据框 df <- tibble( r = c("5", "2,5,6", "5", NA, NA, "5", "2,6", "5", NA, NA) )
通过以下步骤实现需求:
- 将逗号分隔值拆分为多行
- 标记存在的数值为
TRUE - 转换为宽格式并填充缺失值为
FALSE - 处理原NA行的空值
完整代码:
result <- df %>% # 拆分逗号分隔的字符串为单独行 separate_rows(r, sep = ",") %>% # 标记该行存在对应数值 mutate(exists = TRUE) %>% # 转换为宽格式,缺失值填充为FALSE pivot_wider(names_from = r, values_from = exists, values_fill = FALSE) %>% # 将原NA行的所有空值替换为FALSE mutate(across(everything(), ~replace_na(.x, FALSE))) print(result)
运行后输出的结果与你期望的DataFrame结构匹配(注:你给出的目标结果中第二行的6列标记为FALSE,但原数据是2,5,6,正确结果应为TRUE,上述代码会生成正确标记):
# A tibble: 10 × 3 `2` `5` `6` <lgl> <lgl> <lgl> 1 FALSE TRUE FALSE 2 TRUE TRUE TRUE 3 FALSE TRUE FALSE 4 FALSE FALSE FALSE 5 FALSE FALSE FALSE 6 FALSE TRUE FALSE 7 TRUE FALSE TRUE 8 FALSE TRUE FALSE 9 FALSE FALSE FALSE 10 FALSE FALSE FALSE
内容的提问来源于stack exchange,提问作者Akram H
相关产品推荐
相关产品推荐

