首页 > 解决方案 > 如何拆分由“;”分隔的列的元素 并保持其频率值

问题描述

我有一个具有这种结构的data.frame;

df1 <- data.frame(
  gene = c("Gen1", "Gen2;Gen3", "Gen4"),
  freq = c(7, 21 , 51))

我想要一些方法来拆分 Gene2 和 Gene3 但保持它们的频率值,所以最终结果看起来像 df2

df2 <- data.frame(
      gene = c("Gen1", "Gen2", "Gen3", "Gen4"),
      freq = c(7, 21, 21 , 51))

标签: rdataframe

解决方案


使用data.table

setDT(df1)
df1[, .(gene = unlist(strsplit(gene, ";")),  freq), by = 1:nrow(df1)
    ][, !"nrow"]
#    gene freq
# 1: Gen1    7
# 2: Gen2   21
# 3: Gen3   21
# 4: Gen4   51

推荐阅读