根据字符在数据框中乘以单元格

时间:2018-10-29 10:20:28

标签: r dataframe

对于每个具有2x的产品,如何将值乘以2呢?

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 :(得分:3)

使用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

答案 1 :(得分:3)

两个以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))

答案 2 :(得分:3)

首先为那些具有2x的条目创建一个不同的列,然后检查具有2x值的列并更新相同的value列

df<-mutate(df, x=strsplit(Product, split = " ")[[1]][2])
df$Value[df$x=="2x"]<-2*df$Value[df$x=="2x"]