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

R:如何计算R中计算字段列中的值,r,loops,with-statement,R,Loops,With Statement,我有以下dataframe:dataframe有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

我有以下dataframe:dataframe有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]

inx这是一个
数据表
您的
sql
式查询的实现:

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(“查询”)

这样一个问题已经被问过(并回答过)很多次了。使用搜索引擎搜索“R数据帧条件替换”。查看可嵌套的
ifelse
。如有任何问题,请向我们汇报。谢谢你们找到了解决问题的方法。基本上会有9个更新语句我需要使用。P1至P9各一个。