我有一个数据框,该数据框基于以下2种条件进行过滤:
subset(sales_data, month == 'Jan' & dept_name == 'Production')`
我想批量更新上述子集的特定列(例如status
)的值
subset(sales_data, month == 'Jan' & dept_name == 'Production')["status"] <- "Good result"`
我不确定如何做到这一点。
答案 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))
根据提供的条件过滤数据帧,而不更新它们。