簡體   English   中英

如何在r中創建數據框

[英]how to create data frames in r

我在df1df2下方有兩個數據框。我想根據df2中列出的場景創建三個數據框。 因此,例如,基於df2場景df3add 10cover df1所有 a (a1,a2,a3)

 df1                        
 No a1  a2  a3  b1  b2  b3
 3  7   1   3   2   1   7
 3  9   4   9   7   6   2
 3  8   3   1   3   5   0

df2         
Scenario  Cover Action   Number
 1           a   Add        10
 2           a   Subtract   7
 3           b   Multiply   2

df3         
No  Scenario1a1 Scenario1a2 Scenario1a3
3      17         11          13
3      19         14          19
3      18         13          11

df4         
No  Scenario2a1 Scenario2a2 Scenario2a3
3        0        -6         -4
3        2        -3          2
3        1        -4         -6

df5         
No  Scenario3b1 Scenario3b2 Scenario3b3
3        3        2           15
3        14       12           3
3        6        10           0

以下函數將df2一行作為第一個參數,將df1作為第二個參數。

apply.line <- function(line, df)
{
    operators <- list(Add=function(x,y) x+y, 
                      Subtract=function(x,y) x-y, 
                      Multiply=function(x,y) x*y)

    ret <- operators[[line$Action]](df[grepl(line$Cover, names(df))], line$Number)
    names(ret) <- eval(call("paste0", "Scenario", line$Scenario, names(ret)))
    ret
}

用法:

df3 <- apply.line(df2[1,], df1)
df4 <- apply.line(df2[2,], df2)
df5 <- apply.line(df2[3,], df3)

手動,您可以執行以下操作:(我剛剛使用了另一個示例)

df1<-array(c(1:21), dim=c(3,7))

df3<-df1+10
df4<-df1-7
df5<-df1*2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM