我有一个汇率汇率的数据框。我想划分以“比率”开头的任何列。通过“rates.AUD”列。
df <- structure(list(timestamp = c(1490659199L, 1490745599L, 1490831999L,
1490918399L, 1491004766L, 1491091173L, 1491177598L, 1491263999L,
1491350399L, 1491436799L), rates.USD = c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), rates.AUD = c(1.311019, 1.306745, 1.303737,
1.306658, 1.31053, 1.31053, 1.310702, 1.314962, 1.321414, 1.321726
), rates.EUR = c(0.920726, 0.924523, 0.929473, 0.935651, 0.937734,
0.937734, 0.937251, 0.937221, 0.936495, 0.937035)), .Names = c("timestamp",
"rates.USD", "rates.AUD", "rates.EUR"), row.names = c(NA, 10L
), class = "data.frame")
我尝试了以下
library(tidyverse)
result <- df %>% mutate_at(vars(starts_with("rates.")), funs(./rates.AUD))
但这并未将函数应用于以“rates”开头的所有列。 rate.USD和rate.AUD发生变化,但rate.EUR保持不变。
我有点困惑,帮助表示赞赏。
最佳答案
当您将三个费率列除以rate.AUD时,它们将按顺序划分。 rate.AUD会被自身除以等于1s,然后才能用于划分rate.EUR列。这样,rates.EUR被1s除以并保持不变。
一种解决方法是更改列顺序放置率。AUD作为最后一个:df = df[,c(1,2,4,3)]
在进行计算之前。