我得到了這個 data.frame
Data = data.frame( Time = seq(1,5),
v1 = c(0.1, 0.2, 0.4, 0.7, 0.9),
v2 = c(0.1, 0.12, 0.41, 0.72, 0.91),
v3 = c(0.03, 0.13, 0.62, 0.50, 0.90))
但我需要在所有列中減去某個值
subtrate = data.frame(v1 = 0.1, v2 = 0.3, v3 = 0.5)
要得到這個結果:
結果 =
v1 v2 v3
1 0.0 -0.20 -0.47
2 0.1 -0.18 -0.37
3 0.3 0.11 0.12
4 0.6 0.42 0.00
5 0.8 0.61 0.40
uj5u.com熱心網友回復:
有了purrr你可以試試:
map2_df(Data[-1], subtrate, `-`)
輸出
v1 v2 v3
<dbl> <dbl> <dbl>
1 0 -0.2 -0.47
2 0.1 -0.18 -0.37
3 0.3 0.11 0.12
4 0.6 0.42 0
5 0.8 0.61 0.4
uj5u.com熱心網友回復:
我們可以這樣做:
library(tidyverse)
Data %>%
pivot_longer(-Time) %>%
left_join(subtrate %>% pivot_longer(everything(), values_to = 'minus'), by = 'name') %>%
mutate(value = value - minus) %>%
select(-minus) %>%
pivot_wider()
這使:
# A tibble: 5 x 4
Time v1 v2 v3
<int> <dbl> <dbl> <dbl>
1 1 0 -0.20 -0.47
2 2 0.1 -0.18 -0.37
3 3 0.3 0.110 0.12
4 4 0.6 0.42 0
5 5 0.8 0.61 0.4
uj5u.com熱心網友回復:
使用基礎 R,我們可以使用mapply:
Data[-1]<-mapply(\(x,y) x - y, Data[-1], subtrate)
Data
Time v1 v2 v3
1 1 0.0 -0.20 -0.47
2 2 0.1 -0.18 -0.37
3 3 0.3 0.11 0.12
4 4 0.6 0.42 0.00
5 5 0.8 0.61 0.40
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/354162.html
標籤:r
