У меня большой фрейм данных с неизвестными именами столбцов и числовыми значениями 1, 2, 3 или 4. Теперь я хочу заменить все 4 значения на его имя столбца, а все 1, 2 и 3 - на пустые значения.
Конечно, я могу сделать цикл некоторого вида, например:
df <- data.frame(id=1:8,unknownvarname1=c(1:4,1:4),unknownvarname2=c(4:1,4:1))
for (i in 2:length(df)){
df[,i] <- as.character(df[,i])
df[,i] <- mgsub::mgsub(df[,i],c(1,2,3,4),c("","","",names(df)[i]))
}
Это будет результат:
id unknownvarname1 unknownvarname2
1 1 unknownvarname2
2 2
3 3
4 4 unknownvarname1
5 5 unknownvarname2
6 6
7 7
8 8 unknownvarname1 unknownvarname2
Для фрейма данных такого размера этосовершенно никаких проблем.Но когда я пытаюсь выполнить этот цикл на больших фреймах данных с размером до 30 000 и до 40 неизвестных переменных, цикл завершается годами.
Кто-нибудь знает о более быстром способе сделать это?Я пробовал такие функции, как mutate()
из dplyr package
, но мне не удалось заставить его работать.
Заранее большое спасибо!