[英]how to create data frames in r
我在df1
和df2
下方有两个数据框。我想根据df2
中列出的场景创建三个数据框。 因此,例如,基于df2
场景df3
将add
10
以cover
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.