создание новой переменной, используя два столбца, когда они удовлетворяют определенным условиям, используя R - PullRequest
3 голосов
/ 03 сентября 2010

Я предоставляю данные этого примера, чтобы ответить на мой вопрос.

aid=c(1,2,3,4,5,6,7,8,9,10)
foson=c(0,1,2,0,6,9,0,0,3,0)
fosof=c(0,0,2,3,0,0,0,5,0,0)
data=data.frame(aid,foson,fosof)

Теперь мне нужно создать новую переменную (столбец) с именем data $ hist при следующих условиях:

if foson==0 and fosof==0, then hist = 0;
if foson >=1 and fosof==0, then hist = 1;
if foson==0 and fosof>=1, then hist = 2; and
if foson>=1 and fosof>=1, then hist = 3

Я пытался использовать функцию "ifelse", но потерпел неудачу.

Я надеюсь, что вопрос достаточно ясен.

Спасибо за помощь,

Bazon

Ответы [ 2 ]

4 голосов
/ 03 сентября 2010

Одним из возможных решений является следующее

data$hist = (data$foson >=1) + (data$fosof >=1)*2

Это должно дать вам желаемый результат.

2 голосов
/ 03 сентября 2010

Решение от Рамната превосходно, но сделать это с ifelse вы могли бы так:

data$hist <- ifelse(data$foson>=1,ifelse(data$fosof>=1,3,1),ifelse(data$fosof>=1,2,0))

Это, однако, будет означать, что, если любой из foson или fosof равен <1, он выберет параметр для ==0, но, судя по вашим данным, это не будет проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...