Как программно работать с несколькими столбцами (или строками) одновременно? Рассмотрим пример:
df2 <- data.frame(a = 1:10, b = 5:14, c = 10:1, d = 14:5)
Я хотел бы создать два новых столбца, которые будут содержать соотношение a / b и c / d. Для простоты предположим, что пространственные отношения между всеми столбцами согласованы. Имея всего два столбца, можно сделать что-то вроде этого:
df2$ab <- with(df2, a/b)
df2$cd <- with(df2, c/d)
или
df2 <- transform(df2, ab = a/b, cd = c/d)
Чтобы создать конечный продукт, например:
a b c d ab cd
1 1 5 10 14 0.2000000 0.7142857
2 2 6 9 13 0.3333333 0.6923077
3 3 7 8 12 0.4285714 0.6666667
4 4 8 7 11 0.5000000 0.6363636
5 5 9 6 10 0.5555556 0.6000000
6 6 10 5 9 0.6000000 0.5555556
7 7 11 4 8 0.6363636 0.5000000
8 8 12 3 7 0.6666667 0.4285714
9 9 13 2 6 0.6923077 0.3333333
10 10 14 1 5 0.7142857 0.2000000
Но что, если нужно перебрать сотни столбцов? Обычно я использую Excel или SQL для объединения кода и добавления его в свой сценарий .R, но, похоже, должен быть способ решить эту проблему с помощью R.
Полное раскрытие: этот вопрос связан с вопросом о перекрестная проверка , где я собрал решение, которое не может быть оптимальным.