Я пытаюсь дублировать строки в фрейме данных на основе длины элемента в имени столбца, например, если длина элемента df$Name[1] равна 3, я буду дублировать строки 3 раза, но каждая новая строка будет иметь новый элемент в столбце Имя получено из 2-го и 3-го элементов df$Name[1]. Есть ли более простой способ сделать это в R?
Dataframe looks like this
df=
Name c1 c2 c3
c("g7","g8","g9") 2016 82 5
g54 2016 81 1
g5 2016 81 4
g3 2016 82 4
c("g1","g2") 2015 79 1
g45 2016 82 1
Expected Result
df2=
Name c1 c2 c3
g7 2016 82 5
g8 2016 82 5
g9 2016 82 5
g54 2016 81 1
g5 2016 81 4
g3 2016 82 4
g1 2015 79 1
g2 2015 79 1
g45 2016 82 1
Вы можете использовать tidyr::unnest()
:
tidyr::unnest(df, Name)
# c1 c2 c3 Name
#1 2016 82 5 g7
#2 2016 82 5 g8
#3 2016 82 5 g9
#4 2016 81 1 g54
#5 2016 81 4 g5
#6 2016 82 4 g3
#7 2015 79 1 g1
#8 2015 79 1 g2
#9 2016 82 1 g45
df <-
structure(list(Name = list(c("g7", "g8", "g9"), "g54", "g5",
"g3", c("g1", "g2"), "g45"), c1 = c(2016L, 2016L, 2016L,
2016L, 2015L, 2016L), c2 = c(82L, 81L, 81L, 82L, 79L, 82L), c3 = c(5L,
1L, 4L, 4L, 1L, 1L)), row.names = c(NA, -6L), class = "data.frame")