我有一个汇率数据框。我想划分以“比率”开头的任何列。通过“ 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保持不变。
我有点困惑,帮助表示赞赏。
我有同样的问题,并不能弄明白,甚至张贴作为对dplyr GH回购的问题在这里。响应非常有帮助,将为您效劳。问题的摘要是,rate.AUD在逐个遍历data.frame时会被自身除以,而在mutate将rate.AUD自身除以后,该列(现在完全由1组成)将用于后续计算。
Lionel Henry提出了两种方法,在本示例中我将对其进行更新。
result2 <- df %>%
  mutate_at(vars(starts_with("rates.")), function (x) x/df$rates.AUD)
result3 <- df %>% 
  mutate_at(vars(starts_with("rates.")),`/`, y = .$rates.AUD)
都返回此:
    timestamp rates.USD rates.AUD rates.EUR
1  1490659199 0.7627655         1 0.7022980
2  1490745599 0.7652602         1 0.7075007
3  1490831999 0.7670259         1 0.7129298
4  1490918399 0.7653112         1 0.7160642
5  1491004766 0.7630501         1 0.7155380
6  1491091173 0.7630501         1 0.7155380
7  1491177598 0.7629499         1 0.7150756
8  1491263999 0.7604782         1 0.7127362
9  1491350399 0.7567651         1 0.7087067
10 1491436799 0.7565865         1 0.7089480