У меня есть данные анкеты, которые выглядят следующим образом:
items no_stars1 no_stars2 no_stars3 average satisfied bad
1 A 1 0 0 0 0 1
2 B 0 1 0 1 0 0
3 C 0 0 1 0 1 0
4 D 0 1 0 0 1 0
5 E 0 0 1 1 0 0
6 F 0 0 1 0 1 0
7 G 1 0 0 0 0 1
По сути, столбцы заголовка (количество звездочек и удовлетворительное) являются порядковыми номерами для каждого элемента. Я хотел бы суммировать no_stars (столбец 2: 4) и удовлетворительно (столбец 5: 7) в один столбец, чтобы результат выглядел так:
items no_stars satisfactory
1 A 1 1
2 B 2 2
3 C 3 3
4 D 2 3
5 E 3 2
6 F 3 3
7 G 1 1
$ no_stars <- 1 для no_stars1, 2 для no_stars2, 3 для no_stars3 </p>
$ удовлетворительно <- 1 для плохого, 2 для среднего, 3 для хорошего </p>
Я попробовал код ниже
df$no_stars2[df$no_stars2 == 1] <- 2
df$no_stars3[df$no_stars3 == 1] <- 3
df$average[df$average == 1] <- 2
df$satisfied[df$satisfied == 1] <- 3
no_stars <- df$no_stars1 + df$no_stars2 + df$no_stars3
satisfactory <- df$bad + df$average + df$satisfied
tidy_df <- data.frame(df$Items, no_stars, satisfactory)
tidy_df
Есть ли в R функция, которая может делать то же самое? или же
кто-нибудь получил лучшее и более простое решение?
Спасибо