在R中,我有2个数据帧"df1"和"df2".df1和df2如下.
>df1
date value
1 1990-10-10 3
2 1990-10-11 2.3
3 1990-10-12 2.5
>df2
date value
1 1990-10-10 3
2 1990-10-11 2
3 1990-10-12 2
Run Code Online (Sandbox Code Playgroud)
我需要第三个数据框"df3",它包含与df1和df2相同的列名.但是值字段应该是df1和df2中值的乘积.我期待以下输出
>df3
date value
1 1990-10-10 9
2 1990-10-11 4.6
3 1990-10-12 4
Run Code Online (Sandbox Code Playgroud)
R有可能吗?
"合并"长途rbind,并用于aggregate生产产品:
aggregate(value ~ date, data=rbind(df1,df2), FUN=prod)
## date value
## 1 1990-10-10 9.0
## 2 1990-10-11 4.6
## 3 1990-10-12 5.0
Run Code Online (Sandbox Code Playgroud)
如果您有数据框列的模式factor,则value必须转换为character然后numeric才能提取值:
df1$value <- as.factor(df1$value)
df2$value <- as.factor(df2$value)
aggregate(as.numeric(as.character(value)) ~ date, data=rbind(df1,df2), FUN=prod)
## date as.numeric(as.character(value))
## 1 1990-10-10 9.0
## 2 1990-10-11 4.6
## 3 1990-10-12 5.0
Run Code Online (Sandbox Code Playgroud)
你也可以转换as.numeric(levels(value))[value].详情?factor请见.
如果所有日期都相同,那么您可以简单地使用:
df3 <- df1
df3$value <- as.numeric(as.character(df3$value))
df3$value <- df3$value * as.numeric(as.character(df2$value))
Run Code Online (Sandbox Code Playgroud)
如果两者的日期不相同data.frames,请使用@MatthewLundberg以下答案