我有一个数据集,其中一行somtimes对应两个或多个数据点,如一列中的逗号分隔所示。例如:
identifier pos name
ENSG00000208234 1 foo
ENSG00000199674 5,8 bar
ENSG00000221622 4 foobar
我想通过以下方式扩展它
identifier pos name
ENSG00000208234 1 foo
ENSG00000199674 5 bar
ENSG00000199674 8 bar
ENSG00000221622 4 foobar
有没有一种方法不涉及遍历每一行并创建一个新的data.frame?
由于
答案 0 :(得分:0)
假设X
是您的data.frame:
library(data.table)
DT <- data.table(X)
DT2 <- DT[, c(.SD, list(posv=strsplit(pos, ",")))]
DT2[, list(pos=unlist(posv)), by=list(identifier, name)]
请注意,如果pos
为factor
,您首先要将其转换为character
:
DT[, pos := as.character(pos)]