Рассмотрим ДФ как это:
colA colB colC colD
1 1 50 100 a
2 2 51 101 b
3 3 52 102 c
4 4 53 103 d
5 5 54 104 e
6 6 55 105 f
7 7 56 106 g
8 8 57 107 h
9 9 58 108 i
10 10 59 109 j
Я хочу преобразовать переменную "colA", а затем вычислить сумму переменных в строке, которую я выберу select()
внутри mutate()
. Я делаю это:
df %>%
mutate(colA = colA * 60,
sum = rowSums(select(., colA, colB, colC)))
, который дает мне неверный результат:
colA colB colC colD sum
1 60 50 100 a 151
2 120 51 101 b 154
3 180 52 102 c 157
4 240 53 103 d 160
5 300 54 104 e 163
6 360 55 105 f 166
7 420 56 106 g 169
8 480 57 107 h 172
9 540 58 108 i 175
10 600 59 109 j 178
Если я создаю совершенно новую переменную:
df %>%
mutate(colA_mod = colA * 60,
sum = rowSums(select(., colA_mod, colB, colC)))
Я получаю:
Ошибка: ошибка оценки: позиция должна быть между 0 и n.
Однако, когда я использую два отдельных mutate()
с, я получаю правильные результаты:
df %>%
mutate(colA = colA * 60) %>%
mutate(sum = rowSums(select(., colA, colB, colC)))
colA colB colC colD sum
1 60 50 100 a 210
2 120 51 101 b 272
3 180 52 102 c 334
4 240 53 103 d 396
5 300 54 104 e 458
6 360 55 105 f 520
7 420 56 106 g 582
8 480 57 107 h 644
9 540 58 108 i 706
10 600 59 109 j 768
Итак, вопрос в том, как я могу преобразовать переменную / создать новую переменную и выбрать ее внутри одной mutate()
?
Пример данных :
df <- data.frame(colA = 1:10,
colB = 50:59,
colC = 100:109,
colD = letters[1:10])