我想根据一列的值在df中引入新的COLS.

类别Col需要拆分在‘,’上,并且每个拆分的子串需要转到新引入的适当Col.

最小示例:

df <- data.frame(category=c('1, 2', '1, 3','3', '2, 3'),
                 othercolumn= c("Grealish", "Saka", "Henry", 'Jesus'))

所需的df:

finaldf <- data.frame(category=c('1, 2', '1, 3','3', '2, 3'),
                      category1=c('1', '1',NA, NA),
                      category2=c('2',NA,NA, '2'),
                      category3=c(NA,'3','3', '3'),
                 othercolumn= c("Grealish", "Saka", "Henry", 'Jesus'))

CATEGORY 1、CATEGORY 2和CATEGORY 3 COLS将根据CATEGORY列获取值,否则为NA.

推荐答案

在基数R中,您可以执行以下操作:

使用strsplt拆分数字并将其转换为数字

setNamelapplycbind中返回到数据帧

nums <- strsplit(df$category, ",") |> 
  type.convert(as.is = T)

cbind(df[1], do.call(rbind, lapply(nums, \(x){
    sq <- seq(max(unlist(nums)))
    ifelse(sq %in% x , sq, NA ) |> 
      setNames(paste0("category", sq))
  })), df[-1])

  category category1 category2 category3 othercolumn
1     1, 2         1         2        NA    Grealish
2     1, 3         1        NA         3        Saka
3        3        NA        NA         3       Henry
4     2, 3        NA         2         3       Jesus

R相关问答推荐

删除facet_wrap标签之间的水平线

ggplot的轴标签保存在officer中时被剪切

二维样条,严格以一个参数递增

自动变更列表

SHINY:使用JS函数应用的CSS样式显示HTML表格

从服务器在Shiny中一起渲染图标和文本

Ggplot2中geom_tile的动态zoom

在R函数中使用加号

在保留列表元素属性的同时替换列表元素

悬崖三角洲超大型群数计算导致整数溢出

从R中发出的咕噜声中的BUG?

如何在R中使用hmm TMB提前一步预测观察到的状态?

如何对r中包含特定(未知)文本的行求和?

如何使用字符串从重复的模式中提取多个数字?

解析嵌套程度极高的地理数据

为什么函数toTitleCase不能处理english(1),而toupper可以?

防止正则表达式覆盖以前的语句

在ggploy中创建GeV分布时出错

R中从因数到数字的转换

删除r中每个因素级别的最后2行