Перевод языка SAS на язык R: создание новой переменной - PullRequest
0 голосов
/ 26 мая 2020

У меня есть код sas, и я хочу перевести его на R. Меня интересует создание переменных на основе условий других переменных.

data wp;
set wp;

if totalcriteria =>3 and nonecom=0 then content=1;
if totalcriteria =>3 and nonecom=1 then content=0;
if totalcriteria  <3 and nonecom=0 then content=0;
if totalcriteria  <3 and nonecom=1 then content=0;
run;

Это код, который у меня есть. Мои условия для "content" как изменено, и я хотел бы перевести код sas на R, чтобы, надеюсь, заменить строку "mutate" в приведенном ниже коде или соответствовать приведенному ниже коду:

wpnew <- wp %>%
   mutate(content = ifelse (as.numeric(totalcriteria >= 3),1,0))%>%
   group_by(district) %>%
   summarise(totalreports =n(),
             totalcontent = sum(content),
             per.content=totalcontent/totalreports*100)

Можете ли вы помочь мне перевести этот код SAS для языка R. Заранее спасибо.

Вот вывод dput

structure(list(Finances = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0), Exercise = c(0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0), Relationships = c(0, 0, 0, 0, 0, 0, 0, 1, 0, 
0, 0, 0, 0, 0, 0, 0), Laugh = c(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
0, 0, 0, 0, 0, 1), Gratitude = c(0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 
0, 0, 0, 0, 0, 1), Regrets = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 
0, 0, 0, 0, 0, 0), Meditate = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0), Clutter = c(0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 
0, 0, 1, 0, 0, 0), Headache = c(0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 
0, 0, 1, 0, 0, 0), Loss = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
0, 0, 0, 0, 0), Anger = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1, 0, 0, 0), Difficulty = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0), nonecom = c(1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 
1, 0, 1, 1, 0), Othercon = c(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0), totalcriteria = c(0, 0, 2, 3, 2, 0, 0, 4, 3, 
0, 0, 0, 3, 0, 0, 2)), class = "data.frame", row.names = c(NA, 
-16L))

Вот как я бы хотел, чтобы он выглядел

V1   V2   V3...V12  nonecom  Othercon  totalcriteria  content  
1     1   1     0      1        0           3             0
0     0   1     0      0        0           8             1
1     0   0     0      0        1           2             0
1     0   1     0      1        0           1             0

1 Ответ

0 голосов
/ 26 мая 2020

Я использую case_when только потому, что считаю его более похожим с точки зрения синтаксиса. Ваш текущий подход проверяет только первую часть условия IF, а не вторую часть относительно nonecom.

wpnew <- wp %>%
   mutate(content = case_when(sum.content >= 3 & nonecom == 0 ~ 1,
                              TRUE ~ 0))
...