r - заменить строку в определенном столбце - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть набор данных приблизительно из 2 миллионов строк и 45 столбцов. Я хотел бы заменить список значений в одном конкретном столбце в этом наборе данных.

Я пробовал gsub, но это занимает непомерно много времени. Мне нужно выполнить 16 замен.

Чтобы дать вам пример того, что я сделал:

setwd("C:/RStudio")
dat2 <- read.csv("2016 new.csv", stringsAsFactors=FALSE)
dat3 <- read.csv("2017 new.csv", stringsAsFactors=FALSE)
dat4 <- read.csv("2018 new.csv", stringsAsFactors=FALSE)
myfulldata <- rbind(dat2, dat3)
myfulldata <- rbind(myfulldata, dat4)
myfulldata <- myfulldata[, -c(1,5,10,11,12,13,15,20,21,22,41,42,43,44,48,50,51,52,59,61,62,64,65,66,67,68,69,70,71,72)]
gc()
myfulldata[is.na(myfulldata)] <- ""
gc()
myfulldata <- gsub("Text Being Replaced","CS1",myfulldata, fixed=TRUE)

Я связал несколько файлов, затем удалил ненужные столбцы. Суть в том, где я начинаю раздел замены строки. Я только хочу заменить дела в одном конкретном столбце. Имея это в виду, могу ли я использовать что-то отличное от gsub или что-либо, что работает лучше всего, так что я заменяю только случаи в столбце № 36 с именем Waypoint?

Большое спасибо, Eoghan

1 Ответ

0 голосов
/ 01 сентября 2018

Ответ выходит на phiver:

set.seed(123)

# data simulation
n = 10 #2e6
m = 45 #45
myfulldata <- as.data.frame(matrix(paste0("Text", 1:(n * m)), ncol = m), stringsAsFactors = FALSE)
names(myfulldata)[36] <- "Waypoint"
myfulldata$Waypoint[sample(seq.int(nrow(myfulldata)), 5)] <- "Text Being Replaced"
myfulldata$Waypoint
# [1] "Text351" "Text352" "CS1"     "CS1"     "Text355" "CS1"     "CS1"     "CS1"     
# "Text359" "Text360"   

# data replacement
myfulldata$Waypoint <- gsub("Text Being Replaced", "CS1", myfulldata$Waypoint, fixed = TRUE)
myfulldata

Выход:

       V33     V34     V35 Waypoint     V37     V38
1  Text321 Text331 Text341  Text351 Text361 Text371
2  Text322 Text332 Text342  Text352 Text362 Text372
3  Text323 Text333 Text343      CS1 Text363 Text373
4  Text324 Text334 Text344      CS1 Text364 Text374
5  Text325 Text335 Text345  Text355 Text365 Text375
6  Text326 Text336 Text346      CS1 Text366 Text376
7  Text327 Text337 Text347      CS1 Text367 Text377
8  Text328 Text338 Text348      CS1 Text368 Text378
9  Text329 Text339 Text349  Text359 Text369 Text379
10 Text330 Text340 Text350  Text360 Text370 Text380
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...