Как создать новый столбец и добавить текст с указанием c в каждую строку в R studio? - PullRequest
0 голосов
/ 12 января 2020

Я новичок в R Studio и изучаю данные. Я пытаюсь добавить новый столбец "uniqueID" к моему фрейму данных "Population" с уникальными значениями для каждой строки в этом новом столбце. Нет проблем, я могу добавить новый столбец следующим образом: Populations$uniqueID

Однако у меня возникают проблемы с добавлением уникальных значений в каждую строку в этом новом столбце. Значения должны быть комбинацией значений в каждой строке из существующих столбцов «location», «option» и «time». Таким образом, для каждой строки значение для нового столбца uniqueID должно быть чем-то вроде «LocationVariantTime» (например, «CaliforniaMedium1953»). Вот код, который я пытаюсь использовать, используя paste(), но это определенно неправильно. Мне нужно выяснить, как получить значения для каждой строки.

Populations$uniqueID <- paste(Populations$location, Populations$variant, Populations$time)

Вот вывод, когда я просматриваю кадр данных. Нет нового столбца с данными: https://share.getcloudapp.com/7Kuykdg4

Полученная ошибка читает:

Ошибка в $<-.data.frame (*tmp*, uniqueID, value = символ (0): в замене 0 строк, в данных 280932

Заранее благодарим за помощь тому, кто учится,

Ответы [ 3 ]

0 голосов
/ 12 января 2020

Вы можете построчно apply paste в столбцах идентификаторов.

Пример

dat <- transform(dat, un.id=apply(dat[1:3], 1, paste, collapse=""))
head(dat)
#   id    type year      value        un.id
# 1  A Mmedium 2018  1.3709584 AMmedium2018
# 2  B Mmedium 2018 -0.5646982 BMmedium2018
# 3  C Mmedium 2018  0.3631284 CMmedium2018
# 4  A   Large 2018  0.6328626   ALarge2018
# 5  B   Large 2018  0.4042683   BLarge2018
# 6  C   Large 2018 -0.1061245   CLarge2018

Данные:

set.seed(42)
dat <- cbind(expand.grid(id=LETTERS[1:3], 
                         type=c("Mmedium", "Large"), 
                         year=2018:2020), value=rnorm(18))
0 голосов
/ 12 января 2020

В соответствии с выводом имена столбцов в верхнем регистре:

Populations$uniqueID <- paste(Populations$Location, Populations$Variant, Populations$Time)

Решение? Простое изменение дела! Спасибо всем.

0 голосов
/ 12 января 2020

Ваш код не кажется далеко. Возможно, вам придется сначала преобразовать значения в paste() в символы, например, так:

Populations$uniqueID <- paste(as.character(Populations$location), as.character(Populations$variant), as.character(Populations$time), sep = "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...