У меня есть переменная x
со списками символов в каждой строке:
dat <- data.frame(id = c(rep('a',2),rep('b',2),'c'),
x = c('f,o','f,o,o','b,a,a,r','b,a,r','b,a'),
stringsAsFactors = F)
Я хотел бы изменить данные таким образом, чтобы каждая строка представляла собой уникальную (id
, x
) пару, например:
dat2 <- data.frame(id = c(rep('a',2),rep('b',3),rep('c',2)),
x = c('f','o','a','b','r','a','b'))
> dat2
id x
1 a f
2 a o
3 b a
4 b b
5 b r
6 c a
7 c b
Я попытался сделать это, разделив списки символов и сохранив только уникальные значения списка в каждой строке:
dat$x <- sapply(strsplit(dat$x, ','), sort)
dat$x <- sapply(dat$x, unique)
dat <- unique(dat)
> dat
id x
1 a f, o
3 b a, b, r
5 c a, b
Однако я не уверен, как приступить к преобразованию списков строк в отдельные записи строк.
Как бы мне этого добиться? Или Есть ли более эффективный способ преобразования списка строк для преобразования данных, как описано?