Вычислить комбинацию пары переменных для заданной операции в R - PullRequest
1 голос
/ 17 февраля 2020

Из заданного фрейма данных:

# Create dataframe with 4 variables and 10 obs
set.seed(1)
df<-data.frame(replicate(4,sample(0:1,10,rep=TRUE)))

Я бы хотел вычислить операцию вычитания между во всех комбинациях столбцов по парам , но с сохранением только одного подтакта то есть column A- column B но не column B-column A и т. д.

То, что я получил, очень ручное, и это, как правило, не так просто, когда есть много переменных.

# Result
df_result <- as.data.frame(list(df$X1-df$X2,
df$X1-df$X3,
df$X1-df$X4,

df$X2-df$X3,
df$X2-df$X4,

df$X3-df$X4))

Кроме того, имя колонки имени функции должно описывать операцию, т.е. (x1_x2): x1-x2.

1 Ответ

2 голосов
/ 17 февраля 2020

Вы можете использовать combn:

COMBI = combn(colnames(df),2)
res = data.frame(apply(COMBI,2,function(i)df[,i[1]]-df[,i[2]]))
colnames(res) = apply(COMBI,2,paste0,collapse="minus")

head(res)
  X1minusX2 X1minusX3 X1minusX4 X2minusX3 X2minusX4 X3minusX4
1         0         0        -1         0        -1        -1
2         1         1         0         0        -1        -1
3         0         0         0         0         0         0
4         0         0        -1         0        -1        -1
5         1         1         1         0         0         0
6        -1         0         0         1         1         0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...