【发布时间】:2022-01-14 11:18:26
【问题描述】:
我有一个名为“df”的数据框,它有两列:“week”和“stock”
当“周”列为 0 时,我想将“股票”列上的所有值更改为 0。
我可以用 base R 做到这一点:
df[df$week == 0, "stock"] = 0
【问题讨论】:
我有一个名为“df”的数据框,它有两列:“week”和“stock”
当“周”列为 0 时,我想将“股票”列上的所有值更改为 0。
我可以用 base R 做到这一点:
df[df$week == 0, "stock"] = 0
【问题讨论】:
使用ifelse()
df$stock<- ifelse(df$week == 0, 0, df$stock)
或dplyr()
df %>%
mutate(stock=replace(stock, week==0, 0)) %>%
as.data.frame()
样本数据:
df<-data.frame("stock"=c(12334, 3456, 5678, 223232, 456, 678, 567, 1),
"week"=c(0, 1,2,0,4,5,0,7))
【讨论】:
dplyr 寻求解决方案。
dplyr 解决方案,将基本R 的ifelse 替换为if_else
我们可以使用replace 将值更改为 0,对应于 week==0。
df %>% mutate(stock=replace(stock, week==0, 0))
【讨论】: