У меня есть этот фрейм данных:
a <- c(1,2,3,4,5)
b <- c(110, 90, 200, 330, 250)
c <- c(120, 350, NA, 400, 240)
d <- c(180, 200, 120, 240, 340)
e <- c("2019_12", "2020_01", "2020_01", "2020_02", "2019_12")
df <- data.frame(a,b,c,d,e)
names(df) <- c('id', "2019_12", "2020_01", "2020_02", "X")
Я хочу найти индекс столбца, используя столбец X. Например, если столбец X имеет значение «2020_01», то индекс столбца будет равен 3.
Результат, который я хочу, должен быть таким:
id 2019_12 2020_01 2020_02 X col_index
1 1 100 120 180 2019_12 2
2 2 300 350 200 2020_01 3
3 3 NA NA 120 2020_01 3
4 4 430 400 240 2020_02 4
5 5 270 240 340 2019_12 2
Я пробовал -l oop с этой функцией: df["col_index"][i] = grep(df[["X"]][i], colnames(df))
Однако, когда номер строки больше 100k, скорость этой функции не эффективна. Есть ли способ лучше решить эту проблему?