gl <- tibble::tribble(
~X4010, ~X4020, ~X4030, ~X5010, ~X5020, ~X5030, ~X5040,
1000, 100, 10, 500, 100, 50, 5,
1100, 110, 11, 550, 110, 55, 5.5,
1210, 121, 12.1, 605, 121, 60.5, 6.05,
1331, 133.1, 13.31, 665.5, 133.1, 66.55, 6.65,
1464.1, 146.41, 14.64, 732.05, 146.41, 73.2, 7.32,
1610.51, 161.05, 16.1, 805.25, 161.05, 80.52, 8.05,
1771.56, 177.15, 17.71, 885.78, 177.15, 88.57, 8.85,
1948.71, 194.87, 19.48, 974.35, 194.87, 97.43, 9.74,
2143.58, 214.35, 21.43, 1071.79, 214.35, 107.17, 10.71,
2357.94, 235.79, 23.57, 1178.97, 235.79, 117.89, 11.78
)
Run Code Online (Sandbox Code Playgroud)
需要创建两个计算列,按行添加列,如下所示:
gl %>%
mutate(C1 = X4010+X4020+X4030, C2 = X5010+X5020+X5030+X5040 )
Run Code Online (Sandbox Code Playgroud)
但是,由于 X 变量的数量非常大,因此我不想添加单个列,而是想指定范围,例如 X4010:X4030或select(starts_with("X40"))。
如何将公式用于C1和C2被修改以使用范围或模式?谢谢。
所需的输出如下:
result <- tibble::tribble(
~X4010, ~X4020, ~X4030, ~X5010, ~X5020, ~X5030, ~X5040, ~C1, ~C2,
1000, 100, 10, 500, 100, 50, 5, 1110, 655,
1100, 110, 11, 550, 110, 55, 5.5, 1221, 720.5,
1210, 121, 12.1, 605, 121, 60.5, 6.05, 1343.1, 792.55,
1331, 133.1, 13.31, 665.5, 133.1, 66.55, 6.65, 1477.41, 871.8,
1464.1, 146.41, 14.64, 732.05, 146.41, 73.2, 7.32, 1625.15, 958.98,
1610.51, 161.05, 16.1, 805.25, 161.05, 80.52, 8.05, 1787.66, 1054.87,
1771.56, 177.15, 17.71, 885.78, 177.15, 88.57, 8.85, 1966.42, 1160.35,
1948.71, 194.87, 19.48, 974.35, 194.87, 97.43, 9.74, 2163.06, 1276.39,
2143.58, 214.35, 21.43, 1071.79, 214.35, 107.17, 10.71, 2379.36, 1404.02,
2357.94, 235.79, 23.57, 1178.97, 235.79, 117.89, 11.78, 2617.3, 1544.43
)
Run Code Online (Sandbox Code Playgroud)
我希望这是你正在寻找的:
library(dplyr)
gl %>%
rowwise() %>%
mutate(C1 = sum(c_across(starts_with("X40"))),
C2 = sum(c_across(starts_with("X50"))))
# A tibble: 10 x 9
# Rowwise:
X4010 X4020 X4030 X5010 X5020 X5030 X5040 C1 C2
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1000 100 10 500 100 50 5 1110 655
2 1100 110 11 550 110 55 5.5 1221 720.
3 1210 121 12.1 605 121 60.5 6.05 1343. 793.
4 1331 133. 13.3 666. 133. 66.6 6.65 1477. 872.
5 1464. 146. 14.6 732. 146. 73.2 7.32 1625. 959.
6 1611. 161. 16.1 805. 161. 80.5 8.05 1788. 1055.
7 1772. 177. 17.7 886. 177. 88.6 8.85 1966. 1160.
8 1949. 195. 19.5 974. 195. 97.4 9.74 2163. 1276.
9 2144. 214. 21.4 1072. 214. 107. 10.7 2379. 1404.
10 2358. 236. 23.6 1179. 236. 118. 11.8 2617. 1544.
Run Code Online (Sandbox Code Playgroud)