Создание нового столбца в кадре данных с использованием формулы из другой переменной
Я хочу создать новый столбец для фрейма данных, используя формулу из другой переменной.
Пример:
У меня есть набор данных "aa";
x y
2 3
4 5
6 7
Мой код R;
>bb <- "x+y-2"
>attach(aa)
>aa$z<- bb
>detach(aa)
результат;
x y z
2 3 x+y-2
4 5 x+y-2
6 7 x+y-2
но я хочу, как это;
x y z
2 3 3
4 5 7
6 7 11
Не могли бы вы помочь мне..
Ответы
Ответ 1
Если вы хотите оценить выражение в контексте фрейма данных, вы можете использовать with
и within
.
aa$z <- with(aa, x + y - 2)
или
aa <- within(aa, z <- x + y - 2)
Или, если ваше выражение представлено в виде текстовой строки (вы должны увидеть, есть ли другие способы написания кода, оценка произвольных текстовых строк может привести к множеству проблем):
aa$z <- eval(parse(text="x + y - 2"), aa)
Ответ 2
Вероятно, вы должны прочитать некоторые базовые руководства по R, отличные от Введение в R, несмотря на то, что там написано нотация $
более разумна и понятна чем attach/detach
. Попробуйте это тем временем.
aa <- data.frame(x = c(2, 4, 6), y = c(3, 5, 7))
Что дает:
> aa
x y
1 2 3
2 4 5
3 6 7
Затем введите:
aa$z <- (aa$x + aa$y) - 2
Что дает:
> aa
x y z
1 2 3 3
2 4 5 7
3 6 7 11
Ответ 3
вы можете использовать mutate
из пакета dplyr
library(dplyr)
aa <- aa %>% mutate(z = x+y-2)
Надеюсь, что это поможет.