将列乘以另一个 Dataframe 的行值

toiithl6  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(107)

我有以下数据:

set.seed(100)
policy.1 <- data.frame(id= 1:3,
                      temperature= runif(3, min=40, max=80),
                      latitude= runif(3, min=10, max=20),
                      altitude.3= runif(3, min=50, max=70))
                      

policy.2 <- data.frame(year= (2000:2002),
                      time=c(0.81,1.25,1.87))

我想把 Dataframe policy.1temperature列的所有单元格乘以 Dataframe policy.2time列的第一个值。然后我想移动到latitude列和time列的第二个值,依此类推。
我该怎么做?
谢谢你

w80xi6nr

w80xi6nr1#

r2 evans在评论中提供了一个优雅的解决方案,它返回一个有用的列表,另一种选择是使用sapply,它返回一个矩阵:

sapply(seq_len(nrow(policy.2)), 
       function(x) policy.1[, x + 1] * policy.2[x, 2])

# or to overwrite policy.1:

policy.1[,-1] <- sapply(seq_len(nrow(policy.2)), 
                        function(x) policy.1[, x + 1] * policy.2[x, 2])

输出:

id temperature latitude altitude.3
1  1    42.37162 13.20479   123.8839
2  2    40.74859 18.35687   107.3500
3  3    50.29525 18.54713   113.9413

(Note你也可以使用@r2evan的注解方法用policy.1[-1] <- Map(...)覆盖这些值)

相关问题