繁体   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