当前位置: 首页 > 编程笔记 >

如何使用dplyr根据与列名称匹配的字符串选择R中的列?

鄢朝斑
2023-03-14
本文向大家介绍如何使用dplyr根据与列名称匹配的字符串选择R中的列?,包括了如何使用dplyr根据与列名称匹配的字符串选择R中的列?的使用技巧和注意事项,需要的朋友参考一下

R中的列选择通常使用列号或其名称和$delta运算符完成。我们还可以选择带有部分名称字符串或完整名称的列,而无需使用$delta运算符。这可以通过dplyr软件包的select and match功能来完成。

示例

加载dplyr软件包-

> library(dplyr)

考虑以R为底的BOD数据-

> str(BOD)
'data.frame': 6 obs. of 2 variables:
$ Time : num 1 2 3 4 5 7
$ demand: num 8.3 10.3 19 16 15.6 19.8
- attr(*, "reference")= chr "A1.4, p. 270"

选择具有字符串“ and”的BOD数据列-

> select(BOD,matches("and"))
demand
1 8.3
2 10.3
3 19.0
4 16.0
5 15.6
6 19.8

考虑以R为底的树数据

> str(trees)
'data.frame': 31 obs. of 3 variables:
$ Girth : num 8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...
$ Height: num 70 65 63 72 81 83 66 75 80 75 ...
$ Volume: num 10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ...

选择具有字符串“ Vol”的列-

> select(trees,matches("Vol"))
Volume
1 10.3
2 10.3
3 10.2
4 16.4
5 18.8
6 19.7
7 15.6
8 18.2
9 22.6
10 19.9
11 24.2
12 21.0
13 21.4
14 21.3
15 19.1
16 22.2
17 33.8
18 27.4
19 25.7
20 24.9
21 34.5
22 31.7
23 36.3
24 38.3
25 42.6
26 55.4
27 55.7
28 58.3
29 51.5
30 51.0
31 77.0

考虑基数R中的女性数据-

> str(women)
'data.frame': 15 obs. of 2 variables:
$ height: num 58 59 60 61 62 63 64 65 66 67 ...
$ weight: num 115 117 120 123 126 129 132 135 139 142 ...

选择具有字符串“ string”的列-

> select(women,matches("height"))
height
1 58
2 59
3 60
4 61
5 62
6 63
7 64
8 65
9 66
10 67
11 68
12 69
13 70
14 71
15 72

考虑基数R中的mtcars数据-

> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...

选择具有字符串“ mpg”的列-

> select(mtcars,matches("mpg"))
mpg
Mazda RX4 21.0
Mazda RX4 Wag 21.0
Datsun 710 22.8
Hornet 4 Drive 21.4
Hornet Sportabout 18.7
Valiant 18.1
Duster 360 14.3
Merc 240D 24.4
Merc 230 22.8
Merc 280 19.2
Merc 280C 17.8
Merc 450SE 16.4
Merc 450SL 17.3
Merc 450SLC 15.2
Cadillac Fleetwood 10.4
Lincoln Continental 10.4
Chrysler Imperial 14.7
Fiat 128 32.4
Honda Civic 30.4
Toyota Corolla 33.9
Toyota Corona 21.5
Dodge Challenger 15.5
AMC Javelin 15.2
Camaro Z28 13.3
Pontiac Firebird 19.2
Fiat X1-9 27.3
Porsche 914-2 26.0
Lotus Europa 30.4
Ford Pantera L 15.8
Ferrari Dino 19.7
Maserati Bora 15.0
Volvo 142E 21.4

考虑以R为底的睡眠数据

> str(sleep)
'data.frame': 20 obs. of 3 variables:
$ extra: num 0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0 2 ...
$ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
$ ID : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...

选择具有字符串“ ext”的列-

> select(sleep,matches("ext"))
extra
1 0.7
2 -1.6
3 -0.2
4 -1.2
5 -0.1
6 3.4
7 3.7
8 0.8
9 0.0
10 2.0
11 1.9
12 0.8
13 1.1
14 0.1
15 -0.1
16 4.4
17 5.5
18 1.6
19 4.6
20 3.4
 类似资料:
  • 问题内容: 我使用以下内容创建了一个数据框: 我想获得含有从每列的数据帧具有在他们的名字。这只是我的问题的一个简单版本,因此我的实际数据框将具有更多列。 问题答案: 替代方法:

  • 我有以下小消息: 我尝试了这个错误:

  • 本文向大家介绍如何使用dplyr从R数据框中过滤某些字符串的列值?,包括了如何使用dplyr从R数据框中过滤某些字符串的列值?的使用技巧和注意事项,需要的朋友参考一下 筛选数据可以帮助我们制作所需的数据组,而不是将其进一步用于分析。这样,可以实现精度并且计算变得容易。假设我们有一个同质组,然后根据某些特征对该组进行分区,则可以使用dplyr包的过滤功能。 示例 请看以下数据帧- 加载dplyr软件

  • 我有一个数据集,其中有大量表示过程代码的字符串列变量。还有另一列变量表示编码格式(有些是ICD9,有些是其他更神秘的格式)。每次观察都是一个病人。我需要: 搜索每个带有特定前缀的变量名 确保正在使用的代码是ICD9代码(由“02”表示)。 查找这些代码中哪些与特定字符串的前3个字符匹配 如果有任何变量以这三个字符开头,则创建一个新列变量=1,如果没有匹配,则创建一个新列变量=0 变量太多了,通过c

  • 下面是我使用dplyr尝试的代码,

  • 我的数据框就像这个 由reprex包(v2.0.1)于2022-02-17创建 我想在grouping_bycol1之后根据count_col1和count_col2选择具有最大值的行。 我希望我的数据看起来像这样 你可以写一篇专栏文章 但不是两个人