我想知道有沒有一種方法可以自動(例如回圈)在我的下面減去( X2-X1),(X3-X1),( ),并將它們作為三個新列添加到?X3-X2datadata
m="
id X1 X2 X3
A 1 0 4
B 2 2 2
C 3 4 1"
data <- read.table(text = m, h = T)
uj5u.com熱心網友回復:
這與這個問題非常相似;我們基本上只需要更改我們正在使用的函式map2_dfc:
library(tidyverse)
combn(names(data)[-1], 2) %>%
map2_dfc(.x = .[1,], .y = .[2,],
.f = ~transmute(data, !!paste0(.y, "-", .x) := !!sym(.y) - !!sym(.x))) %>%
bind_cols(data, .)
#> id X1 X2 X3 X2-X1 X3-X1 X3-X2
#> 1 A 1 0 4 -1 3 4
#> 2 B 2 2 2 0 0 0
#> 3 C 3 4 1 1 -2 -3
uj5u.com熱心網友回復:
與combn:
dif <- combn(data[-1], 2, \(x) x[, 2] - x[, 1])
colnames(dif) <- combn(names(data)[-1], 2, \(x) paste(x[2], x[1], sep = "-"))
cbind(data, dif)
# id X1 X2 X3 X2-X1 X3-X1 X3-X2
#1 A 1 0 4 -1 3 4
#2 B 2 2 2 0 0 0
#3 C 3 4 1 1 -2 -3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531252.html
下一篇:如何從幾列將類別更改為虛擬變數
