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")
我有以下数据框:数据框超过 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")