Я делаю некоторые манипуляции с данными, включая создание нескольких столбцов, работая с другими столбцами. Работать с использованием цикла for легко, но я застрял, используя функцию apply like для выполнения кодирования.
Одна проблема заключается в том, как ссылаться на новые столбцы, которые еще не были созданы. Во-вторых, каждый новый столбец предполагает работу с двумя другими столбцами в одном и том же фрейме данных.
Пример: допустим, у меня есть простой фрейм данных (на самом деле у меня гораздо больше столбцов):
> df <- data.frame("x1" = 1:2, "x2" = 3:4, "y1"= 1:2, "y2"= 3:4)
> df
x1 x2 y1 y2
1 3 1 3
2 4 2 4
Я хотел создать две другие переменные с именами z1 и z2, так что z1 =(x1 + y1) / 3 и z2 = (x2 + y2) / 3
Используя для цикла, я могу сделать это легко.
x.var <- paste("x", 1:2, sep = '')
y.var <- paste("y", 1:2, sep = '')
z.var <- paste("z", 1:2, sep = '')
for (i in 1:2) {
df[[z.var[i]]] <- (df[[x.var[i]]] + df[[y.var[i]]])/3
}
df
x1 x2 y1 y2 z1 z2
1 1 3 1 3 0.6666667 2.000000
2 2 4 2 4 1.3333333 2.666667
Как это можно преобразовать для циклаиспользуя какой-нибудь компактный код, используя семейные функции apply?