r - 根据每个 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)}
解决方案
推荐阅读
- javascript - 理解 Javascript 纱线图案程序的问题
- c++ - 2016 CCC S4 结合饭团码??C++
- sql - SQL 偏移量在 SQL Server 中失去其顺序
- ios - 接收者没有标识符“goToDetail”的segue
- apache-flink - Apache Flink - ConnectedStream 顺序和背压
- c# - 在 ASP.Net MVC 中创建授权表
- flutter - 如何在点击时切换按钮的文本?
- python - 我们可以将列表作为值添加到 redis 中的排序集吗?
- python - Python代码来跟踪我的网站机器的IP地址?
- c# - 如何在 C# 中制作超过 1 个透明图片框层?