繁体   English   中英

根据R中另一列的值乘以数据框列的值

[英]Multiplying data frame column values based on the value of another column in R

我在R中有一个数据框(150000 obs,15个变量),需要根据另一个值校正一个变量的值子集(简单地乘以一个常数)。 有什么简单的方法可以做到这一点?

虽然我可以应用,但是我不确定如何编写函数(显然不能在函数中乘法)和限定符:

df$RESULT <- df[apply(df$RESULT, 1, function(x * 18.01420678) where(SITE==1)), ]

你是这个意思?

dat      <- data.frame(x=1:10,y=sample(20,10))
constant <- 100
dat$y    <- ifelse(dat$x > dat$y, dat$y*constant, dat$y)

您可以使用“ [”的容量进行子设置,但是对于子集的“更正”,您需要使用逻辑表达式来定义分配双方的子集。 由于您将仅使用需要校正的值,因此无需使用任何其他条件函数。

df[ df$SITE==1, "RESULT" ] <- df[ df$SITE==1, "RESULT"] * 18.01420678

如果要对大量(几百万个)案例进行操作或在模拟中重复进行操作,则此方法可能比ifelse方法快得多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM