R:如何计算 R 中计算字段列中的值

R: How to calculate value in computed field column in R

我有以下数据框:数据框超过 1000 行,我需要使用最后 3 列更新 P1-P9 列。

P1  P2  P3  P4  P5  P6  P7  P8  P9  Noofmonths  divamount   beginingMonth
0   0   0   0   0   0   0   0   0   3           29948.333   4
0   0   0   0   0   0   0   0   0   3           29766.667   4
0   0   0   0   0   0   0   0   0   3           1778.667    4
0   0   0   0   0   0   0   0   0   2           2595.6      3

条件:

if beginingMonth = 4 then select Noofmonths.
if Noofmonths= 3 then P4 = divamount, P5 = divamount, p6 = divamount

if beginingMonth = 1 then select Noofmonths.    
if Noofmonths= 1 then P1 = divamount

if beginingMonth = 2 then select Noofmonths.    
if Noofmonths= 2 then P2 = divamount, P3 = divamount.

您可以使用 ifelse 或者您可以使用逻辑索引,请参阅 R-intro.pdf,第 2.4 和 2.7 节。

inx <- dat$beginingMonth == 4 & dat$Noofmonths == 3
dat$P4[inx] <- dat$P5[inx] <- dat$P6[inx] <- dat$divamount[inx]

inx <- dat$beginingMonth == 1 & dat$Noofmonths == 1
dat$P1[inx] <- dat$divamount[inx]

inx <- dat$beginingMonth == 2 & dat$Noofmonths == 2
dat$P2[inx] <- dat$P3[inx] <- dat$divamount[inx]

这是您的 sql 式查询的 data.table 实现:

library(data.table)

your_dt = data.table(your_df)

your_dt[beginingMonth == 4 & Noofmonths == 3,
        .(P4=divamount, P5=divamount, P6=divamount)]

如果您对 sql 感兴趣。使用包 "sqldf" 为上述内容编写 sql 查询。支持通用 sql。 install.packages("sqldf") sqldf::sqldf("query")