首页 > 解决方案 > 根据每个 ID 的条件优化多次替换

问题描述

哪种方法最快?我有许多“值”列(> 100),当“valueAux”为零时,我必须在其中替换值。'value1' 列应始终设置为零,'value1Aux'(对于同一行)为零

原始数据:

df <- data.frame(ID = c(1,1,1,1,1,1,1,1),
 value1 = c(23, 0, 4, 1, 0, 0, 8, 12),
   value2 = c(0, 12, 56, 7, 8, 1, 8, 12),
  value1aux = c(0, 0, 89, 65, 0, 0, 0, 1),
  value2aux = c (1,1,0,0,4,15,67,12))

结果所需数据:

df <- data.frame(ID = c(1,1,1,1,1,1,1,1),
 value1 = c(0, 0, 4, 1, 0, 0, 0, 12),
   value2 = c(0, 12, 0, 0, 8, 1, 8, 12),
  value1aux = c(0, 0, 89, 65, 0, 0, 0, 1),
  value2aux = c (1,1,0,0,4,15,67,12))

要优化的代码:

names <- colnames(df[2:3])
names2 <- colnames(df[4:5])
for (i in 1:nrow(df)){
df[i,names] <- replace (df[i,names], df[i,names2] == 0, 0)}

标签: rreplace

解决方案


推荐阅读