Может быть проще, если у вас есть числовые значения в конце имен столбцов последовательно для столбцов имен и лайков.
Добавьте строку для переименования имен столбцов и последовательно используйте «_1», "_2" и др. c. в конце.
Затем pivot_longer
с шаблоном регулярного выражения для принятия числа в конце.
library(tidyverse)
names(df) <- sub("(\\d+)_(\\w*)", "\\2_\\1", names(df))
df %>%
pivot_longer(starts_with("actor"),
names_to = c(".value", "group"),
names_pattern = "(\\w+)_(\\d+)$")
Выход
# A tibble: 18 x 4
title group actor actor_FB_likes
<chr> <chr> <chr> <int>
1 Avatar 1 CCH_Pound… 1000
2 Avatar 2 Joel_Davi… 936
3 Avatar 3 Wes_Studi 855
4 Pirates_of_the_Car… 1 Johnny_De… 40000
5 Pirates_of_the_Car… 2 Orlando_B… 5000
6 Pirates_of_the_Car… 3 Jack_Daven… 1000
7 The_Dark_Knight_Ri… 1 Tom_Hardy 27000
8 The_Dark_Knight_Ri… 2 Christian… 23000
9 The_Dark_Knight_Ri… 3 Joseph_Gor… 23000
10 John_Carter 1 Daryl_Sab… 640
11 John_Carter 2 Samantha_… 632
12 John_Carter 3 Polly_Walk… 530
13 Spider-Man_3 1 J.K._Simm… 24000
14 Spider-Man_3 2 James_Fra… 11000
15 Spider-Man_3 3 Kirsten_Du… 4000
16 Tangled 1 Brad_Garr… 799
17 Tangled 2 Donna_Mur… 553
18 Tangled 3 M.C._Gainey 284
Данные
df <- structure(list(title = c("Avatar", "Pirates_of_the_Car…", "The_Dark_Knight_Ri…",
"John_Carter", "Spider-Man_3", "Tangled"), actor_1 = c("CCH_Pound…",
"Johnny_De…", "Tom_Hardy", "Daryl_Sab…", "J.K._Simm…",
"Brad_Garr…"), actor_2 = c("Joel_Davi…", "Orlando_B…",
"Christian…", "Samantha_…", "James_Fra…", "Donna_Mur…"
), actor_3 = c("Wes_Studi", "Jack_Daven…", "Joseph_Gor…",
"Polly_Walk…", "Kirsten_Du…", "M.C._Gainey"), actor_1_FB_likes = c(1000L,
40000L, 27000L, 640L, 24000L, 799L), actor_2_FB_likes = c(936L,
5000L, 23000L, 632L, 11000L, 553L), actor_3_FB_likes = c(855L,
1000L, 23000L, 530L, 4000L, 284L)), class = "data.frame", row.names = c(NA,
-6L))