Я хотел бы реструктурировать свой фрейм данных, который содержит данные о том, был ли дом просмотрен, куплен или продан, а также о дате просмотра / покупки / продажи.
Данные были введены таким образом, что, хотя существует несколько переменных даты (var_datevar_A5_3_B32
, var_datevar_A5_4_B33
, var_datevar_A5_5_B34
), каждая из этих переменных содержит сочетание дат продаж, дат покупки и просмотр-даты.
Поэтому, если вы хотите узнать, является ли дата, например, var_datevar_A5_3_B32
, датой просмотра, продажи или покупки, мне нужно проверить переменные с совпадающим префиксом (A5_3_B32), то есть var_viewed_A5_3_B32
, var_sold_A5_3_B32
, и var_purchased_A5_3_B32
и посмотрите, какой из них закодирован как "Y".
Я бы хотел добавить три новые переменные в мой фрейм данных: переменная только для дат продаж (var_date_sold
), переменная только для дат покупок (var_date_purchased
) и переменная только для дат просмотра (var_date_viewed
) как в dfgoal
.
Я предпринял попытку, но кроме этого я не могу понять, как вставить дату в мою новую переменную, я хотел бы найти более общее решение, потому что в моем реальном наборе данных у меня есть множество переменных как это.
Спасибо за любую помощь!
# Starting point
df <- data.frame(var_home=c("a","b","c","d","e"),
var_datevar_A5_3_B32=c("01-12-2012","05-06-2014","03-09-2015","03-03-2016",NA),var_datevar_A5_4_B33=c("07-12-2012",NA,"07-07-2017","13-03-2016",NA),var_datevar_A5_5_B34=c("05-03-2013",NA,NA,"23-03-2016",NA),var_purchased_A5_3_B32=c(NA,"Y",NA,NA,NA),var_purchased_A5_4_B33=c("N","N","Y",NA,NA),var_purchased_A5_5_B34=c("Y",NA,NA,NA,NA),
var_viewed_A5_3_B32=c("Y","N","Y","Y",NA),var_viewed_A5_4_B33=c(NA,NA,NA,"Y","N"),var_viewed_A5_5_B34=c(NA,NA,NA,"Y",NA),var_sold_A5_3_B32=c("NA","N",NA,"N",NA),var_sold_A5_4_B33=c("Y","N",NA,"N",NA),var_sold_A5_5_B34=c("N",NA,NA,NA,"Y"))
# Goal
dfgoal <- data.frame(var_home=c("a","b","c","d","e"),
var_datevar_A5_3_B32=c("01-12-2012","05-06-2014","03-09-2015","03-03-2016",NA),var_datevar_A5_4_B33=c("07-12-2012",NA,"07-07-2017","13-03-2016",NA),var_datevar_A5_5_B34=c("05-03-2013",NA,NA,"23-03-2016",NA),var_purchased_A5_3_B32=c(NA,"Y",NA,NA,NA),var_purchased_A5_4_B33=c("N","N","Y",NA,NA),var_purchased_A5_5_B34=c("Y",NA,NA,NA,NA),
var_viewed_A5_3_B32=c("Y","N","Y","Y",NA),var_viewed_A5_4_B33=c(NA,NA,NA,"Y","N"),var_viewed_A5_5_B34=c(NA,NA,NA,"Y",NA),var_sold_A5_3_B32=c("NA","N",NA,"N",NA),var_sold_A5_4_B33=c("Y","N",NA,"N",NA),var_sold_A5_5_B34=c("N",NA,NA,NA,"Y"),
var_date_viewed =c("01-12-2012",NA,"03-09-2015","03-03-2016,13-03-2016,23-03-2016",NA),var_date_sold=c("07-12-2012",NA,NA,NA,NA),var_date_purchased=c("05-03-2013","05-06-2014","07-07-2017",NA,NA))
# Attempt pseudo-code
var_date_viewed <- ifelse((!is.na(var_datevar_A5_3_B32) & var_viewed_A5_3_B32=="Y") | (!is.na(var_datevar_A5_4_B33) & var_viewed_A5_4_B33=="Y") | (!is.na(var_datevar_A5_5_B34) & var_viewed_A5_5_B34=="Y"), PASTE_THE_DATE,NA)