Я пользователь SAS, который пытается преобразовать код SAS в версию Python.
Я создал код SAS, как показано ниже, и у меня есть некоторые проблемы, которые необходимо применить к языку Python.Предположим, у меня есть таблица данных, которая содержит поля от возрастов1 до старения60, и я хочу создать два новых поля с именами «life_def» и «obs_time».Эти два поля содержали значение как 0 и будут изменены в зависимости от условий других полей, которые устарели от 1 до ста. 60 *
data want;
set have;
array aging_array(*) aging1--aging60;
life_def=0;
obs_time=0;
do i to 60;
if life_def=0 and aging_array[i] ne . then do;
if aging_array[i]>=4 then do;
obs_time=i;
life_def=1;
end;
if aging_array[i]<4 then do;
obs_time=i;
end;
end;
end;
drop i;
run;
Я пытался воссоздать вышеуказанный код SAS в версию Python, но это не такхотя я работаю.Ниже приведен код, над которым я сейчас работаю.
df['life_def']=0
df['obs_time']=0
for i in range(1,lag+1):
if df['life_def'].all()==0 and pd.notnull(df[df.columns[i+4]].all()):
condition=df[df.columns[i+4]]>=4
df['life_def']=np.where(condition, 1, df['life_def'])
df['obs_time']=np.where(condition, i, df['obs_time'])
Предположим, df [df.columns [i + 4]] - это мои столбцы старения в SAS.Используя приведенный выше код, цикл продолжается, когда я увеличивается.Тем не менее, логика SAS предусматривает остановку i при первом старении> = 4.
Например, если age7> = 4 (в первый раз) life_def будет 1, а obs_time будет 7 и назначитследующий цикл, который равен 8.
Спасибо!