Как создать новую переменную данных в зависимости от существующих переменных - PullRequest
0 голосов
/ 19 марта 2012

Есть ли предложения по лучшей логике для создания новой переменной в фрейме данных r, который зависит от других переменных в фрейме данных?

По сути, у меня есть переменная типа в одном фрейме данных, которую я хочу переопределить в определенных случаях, которые содержатся во втором фрейме данных. Ниже приведены некоторые примеры данных:

#### original data frame
id=c(1,2,3,4,5,6)
type=c("O", "O", "G", "O", "G", "O")
qty=c(10,20,30,40,50,60)
df1=data.frame(id, type, qty)

#### new dataframe with type override
id=c(2,4)
type_override=c("G", "G")
df2=data.frame(id,type_override)

#### dataframe with both origional and override type
df3=merge(df1, df2, by=c("id"), all.x=TRUE)

#### create new type variable that uses "type" for all variables
#### unless "type_override" calls for a override
df3$type_new= ???????

Я хотел бы использовать классификацию типов (то есть "type_override") во втором кадре данных, чтобы переопределить классификацию типов (то есть "тип" в первом кадре данных.

Я пользователь Excel, который пытается перейти на R, в Exel я бы просто сделал что-то вроде:

type_newC1 = if(isna(type_overrideB1),typeA1,type_overrideB1)

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Код практически идентичен тому, к которому вы привыкли в Excel:

df3$type_new <- ifelse(is.na(df3$type_override),df3$type,df3$type_override)

или, если вы хотите сохранить набор текста, часто пользователи R будут использовать with:

df3$type_new <- with(df3,ifelse(is.na(type_override),type,type_override))
0 голосов
/ 19 марта 2012

Если ваш df2 будет использоваться только с одним типом, вы можете уйти с одного шага:

df1$type_override <- ifelse(df1$id %in% df2$id, df2$type_override, df1$type)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...