R заменить значение в кадре данных - PullRequest
1 голос
/ 06 апреля 2020

У меня есть фрейм данных с несколькими переменными, datem, seriesid и ценой.

Для данного сериала, например, серии 1000, я хочу изменить цену на определенную дату (примечание datem = year (date) * 12 + месяц (дата)).

Я пробовал:

df$price[df$seriesid==114051 & ((df$datem == (1888*12+4))||(df$datem==(1888*12+3)))] <- 10.0

Однако это заменяет все мои значения даты на одну и ту же дату и заменяет все мои сериалы на 114051.

У кого-нибудь есть легкий способ заменить указанные c значения в моем фрейме данных (это большой фрейм данных).

Спасибо

1 Ответ

2 голосов
/ 06 апреля 2020

Если ваш набор данных объемный, data.table - хороший вариант. Вы можете использовать условную замену благодаря оператору := (обновление по ссылке)

library(data.table)
setDT(df)

df[id==114051 & (datem %in% c(1888*12+3, 1888*12+4))], price := 10.0]

Эквивалентное решение dplyr будет выглядеть следующим образом:

library(dplyr)
df %>% mutate(price = if_else(id==114051 & (datem %in% c(1888*12+3, 1888*12+4)), 10, price)

Возможно, оно будет медленнее чем первое решение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...