首页 > 解决方案 > 使用分隔符将一列转换为多列

问题描述

有这样的数据框:

data.frame(id = c(1,2), text = c("Google,Amazon", "Amazon,Yahoo"), stringsAsFactors = FALSE)
#   id          text
# 1  1 Google,Amazon
# 2  2  Amazon,Yahoo

如何使用逗号作为分隔符从文本列创建。预期输出示例:

data.frame(id = c(1,2), Google = c(1,0), Amazon = c(1,1), Yahoo = c(0,1))
#      id Google Amazon Yahoo
# 1     1      1      1     0
# 2     2      0      1     1

标签: rdataframedplyrtidyrstrsplit

解决方案


使用库dplyrtidyr

library(dplyr)
library(tidyr)

df %>% 
  mutate(
    text = strsplit(text, ","),
    value = 1
    ) %>% 
  unnest(text) %>% 
  pivot_wider(
    id_cols = id,
    names_from = text,
    values_from = value,
    values_fill = list(value = 0)
  )

输出

# A tibble: 2 x 4
#      id Google Amazon Yahoo
#   <dbl>  <dbl>  <dbl> <dbl>
# 1     1      1      1     0
# 2     2      0      1     1

推荐阅读