Умножить ячейку в кадре на основе символа - PullRequest
0 голосов
/ 29 октября 2018

Как мне умножить значение на коэффициент 2 для каждого продукта, имеющего 2x?

Restaurant     Product     Value
1              a           3
1              b 2x        5
2              c           10
2              a 2x        2

Я пытался:

df = df %>%
  mutate(Value=case_when(
    Product =="2x"~ Value * 2,T~1))

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Два варианта с основанием R:

# option 1:
df$Value <- df$Value * (grepl("2x", df$Product) + 1L)

# option 2:
ix <- grepl("2x", df$Product)
df$Value[ix] <- df$Value[ix] * 2L

, что дает:

> df
  Restaurant Product Value
1          1       a     3
2          1    b 2x    10
3          2       c    10
4          2    a 2x     4

С :

df %>% 
  mutate(Value = Value * (grepl("2x", Product) + 1L))
0 голосов
/ 29 октября 2018

Сначала создайте другой столбец для этих записей, имеющий 2x, а затем проверьте тот столбец, который имеет значение 2x, и обновите столбец значения для того же

df<-mutate(df, x=strsplit(Product, split = " ")[[1]][2])
df$Value[df$x=="2x"]<-2*df$Value[df$x=="2x"]
0 голосов
/ 29 октября 2018

С Tidyverse, просто сделайте:

df %>% mutate(x=(1+str_detect(Product,"2x"))*Value)
#  Restaurant Product Value  x
#1          1       a     3  3
#2          1    b 2x     5 10
#3          2       c    10 10
#4          2    a 2x     2  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...