从数据帧过滤获得的子集中的批量更新

时间:2019-04-04 03:55:48

标签: r subset

我有一个数据框,该数据框基于以下2种条件进行过滤:

subset(sales_data, month == 'Jan' & dept_name == 'Production')`

我想批量更新上述子集的特定列(例如status)的值

subset(sales_data, month == 'Jan' & dept_name == 'Production')["status"] <- "Good result"`

我不确定如何做到这一点。

1 个答案:

答案 0 :(得分:2)

你可以做

{11={1=[10, 20, 30, 40, 50], 3=[60, 70]}, 44={1=[10, 20, 30, 40, 50]}}

使用sales_data$status[ sales_data$month == 'Jan' & sales_data$dept_name == 'Production'] <- "Good result"

replace

我们还可以将其集成到sales_data$status <- with(sales_data, replace(status, month == 'Jan' & dept_name == 'Production', "Good result")) 链中。

dplyr

或带有library(dplyr) sales_data %>% mutate(status = replace(status, month == 'Jan' & dept_name == 'Production', "Good result"))

case_when

sales_data %>% mutate(status = case_when(month == 'Jan' & dept_name =='Production'~"Good result", TRUE ~ status)) 根据提供的条件过滤数据帧,而不更新它们。