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
)
需要创建两个计算列,按行方式添加列,如下所示:
gl %>%
mutate(C1 = X4010+X4020+X4030, C2 = X5010+X5020+X5030+X5040 )
但是,由于X变量的数量非常大,因此我想指定诸如X4010:X4030
或select(starts_with(“X40”))之类的
范围,而不是添加单个列。
如何修改< code>C1和< code>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
)
我们还可以使用<code>pivot_longer
library(dplyr)
library(tidyr)
gl %>%
mutate(rn = row_number()) %>%
pivot_longer(cols = -rn, names_to = c('.value', 'grp'),
names_pattern = '^(X\\d)(.*)') %>%
group_by(rn) %>%
summarise(across(starts_with('X'), sum, na.rm = TRUE)) %>%
select(-rn) %>%
bind_cols(gl, .)
# A tibble: 10 x 9
# X4010 X4020 X4030 X5010 X5020 X5030 X5040 X4 X5
# <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.
使用split.default
-
cbind(gl, sapply(split.default(gl, sub('(X\\d).*', '\\1', names(gl))), rowSums))
# X4010 X4020 X4030 X5010 X5020 X5030 X5040 X4 X5
#1 1000.00 100.00 10.00 500.00 100.00 50.00 5.00 1110.00 655.00
#2 1100.00 110.00 11.00 550.00 110.00 55.00 5.50 1221.00 720.50
#3 1210.00 121.00 12.10 605.00 121.00 60.50 6.05 1343.10 792.55
#4 1331.00 133.10 13.31 665.50 133.10 66.55 6.65 1477.41 871.80
#5 1464.10 146.41 14.64 732.05 146.41 73.20 7.32 1625.15 958.98
#6 1610.51 161.05 16.10 805.25 161.05 80.52 8.05 1787.66 1054.87
#7 1771.56 177.15 17.71 885.78 177.15 88.57 8.85 1966.42 1160.35
#8 1948.71 194.87 19.48 974.35 194.87 97.43 9.74 2163.06 1276.39
#9 2143.58 214.35 21.43 1071.79 214.35 107.17 10.71 2379.36 1404.02
#10 2357.94 235.79 23.57 1178.97 235.79 117.89 11.78 2617.30 1544.43
我希望这是你正在寻找的:
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.
操作步骤: 菜单栏 —> Edit -- > Column Selection Mode (列选择模式) 快捷键: Mac: Shift + Command + 8 Windows/Linux: Alt + Shift + Insert
范围选择器(rangeSelector)是图表中用于选择数据范围的工具,它提供了预配置的时间选择按钮,包括 1天,1周,1个月等,同时也提供时间输入框用于手动指定时间范围。 时间选择按钮 通过 rangeSelector.buttons 可以指定时间选择按钮,默认是 buttons: [{ type: 'month', count: 1, text: '1m' }, {
问题内容: 是否可以为查询的IN部分定义一个范围,像这样 代替 问题答案: 您不能,但可以使用 请注意,这是包含性内容,并且将包含ID为10和15的项。 如果不想包含,则必须退回到使用and 运算符。
问题内容: 如何选择以“ A”开头的名称直到以“ D”开头的名称的行?并按字母顺序对它们进行排序?就像和的组合? 样品表: 样本输出: 名称以“ Cr”开头,直到名称以“ D”开头 样本输出: 问题答案: 从最多选择名称,但不包括: 由于这是一个简单的比较,因此如果该字段有一个索引,则可以使用索引。
问题内容: 我必须阅读一些文件,其中一些文件采用Excel格式,有些文件采用CSV格式。一些文件具有数百列。 有没有一种方法可以选择多个列范围而不指定所有列名或位置?例如,选择第1 -10、15、17和50-100列: 从Excel文件和CSV文件创建数据框时以及创建数据框框程序后,我都需要知道如何执行此操作。 问题答案: 采用 所以你可以做
在本章中,我们将介绍文档中的选择以及在表单字段(如 <input>)中的选择。 JavaScript 可以获取现有选择,选择/取消全部或部分选择,从文档中删除所选部分,将其包装到一个标签(tag)中,等。 你可以在本文最后的“总结”部分中找到使用方法。但是,如果你阅读整篇内容,将会有更多收获。底层的(underlying)Range 和 Selection 对象很容易掌握,因此,你不需要任何诀窍便