首页 > 解决方案 > 尝试选择特殊行时出现奇怪的错误

问题描述

这似乎是一个非常愚蠢的问题,但我找不到解决方案。

我有一个长格式的数据集,其中一列是变量:“var”,它显示了正在查看的变量。我使用以下代码将数据集从宽格式转换为长格式:

data_long = reshape(data_de , varying = c("etc001_correct","etc002_correct","etc003_correct", "etc004_correct", "etc005_correct", "etc006_correct", "inf001_correct", "inf002_correct","inf003_correct","inf004_correct","inf005_correct","inf006_correct","kon001_correct","kon004_correct","mat001_correct","mat003_correct","mat004_correct","mat007_correct","mst002_correct","mst003_correct","mst005_correct","phy001_correct","phy002_correct","phy003_correct","phy004_correct","phy005_correct","phy007_correct","phy008_correct","sta002_correct","sta003_correct","sta005_correct","sta006_correct","sta007_correct","tcm002_correct","tcm003_correct","tcm005_correct","tcm007_correct","thd004_correct","wst004_correct","wst005_correct","wst006_correct","wst007_correct","wst008_correct","che01_correct","phy01_correct","phy03_correct"),
timevar = "Testlet" , v.names = "var_corr" , sep = "." , direction = "long", times=c("etc001", "etc002", "etc003", "etc004", "etc005", "etc006","inf001", "inf002", "inf003","inf004","inf005","inf006","kon001","kon004","mat001","mat003","mat004","mat007","mst002","mst003","mst005","phy001","phy002","phy003","phy004","phy005","phy007","phy008","sta002","sta003","sta005","sta006","sta007","tcm002","tcm003","tcm005","tcm007","thd004","wst004","wst005","wst006","wst007","wst008","che01","phy01","phy03"))

现在我想创建仅包含相应变量的新变量,例如仅包含所有带有 etc 的行,因此:etc001、etc002、etc003、etc004、etc005、etc006

我试着这样做:

etc_c<-data_long[Testlet == "etc",]
Error in var == "etc001" : 
  comparison (1) is possible only for atomic and list types

所以我这样尝试:

etc_c<-data_long[Testlet == "etc001",]

这行得通,但现在我想添加 etc002,etc003 ......

我可以手动选择行,但我希望可能有一个工作代码可以节省一些时间。

数据集示例:

          var_corr id
1.etc001         NA  1
2.etc001         NA  2
3.etc001         NA  3
4.etc001  0.7500000  4
5.etc001         NA  5
6.etc001         NA  6
7.etc001         NA  7
8.etc001         NA  8
9.etc001         NA  9
10.etc001        NA 10
11.etc001 0.8333333 11
12.etc001        NA 12
13.etc001 0.4444444 13
14.etc001        NA 14
15.etc001 0.8333333 15
16.etc001 0.5714286 16
17.etc001        NA 17
18.etc001 0.5833333 18
19.etc001        NA 19
20.etc001        NA 20
21.etc001        NA 21
22.etc001        NA 22
23.etc001        NA 23
24.etc001        NA 24
25.etc001        NA 25
26.etc001        NA 26
27.etc001        NA 27
28.etc001        NA 28
29.etc001        NA 29
30.etc001        NA 30
31.etc001        NA 31
32.etc001 0.9166667 32
33.etc001 0.9166667 33
34.etc001        NA 34
35.etc001        NA 35
36.etc001        NA 36
37.etc001 0.9166667 37
38.etc001        NA 38
39.etc001        NA 39
40.etc001        NA 40
41.etc001        NA 41
42.etc001 0.7500000 42
43.etc001 0.3333333 43
44.etc001        NA 44
45.etc001 0.5000000 45
46.etc001        NA 46
47.etc001 0.5000000 47
48.etc001        NA 48
49.etc001        NA 49
50.etc001 0.7500000 50
51.etc001 0.4166667 51
52.etc001        NA 52
53.etc001 0.5000000 53
54.etc001 0.5000000 54
55.etc001        NA 55
56.etc001        NA 56
57.etc001 0.1666667 57
1.etc002         NA  1
2.etc002         NA  2
3.etc002         NA  3
4.etc002         NA  4
5.etc002         NA  5
6.etc002  0.2500000  6
7.etc002  0.2222222  7
8.etc002         NA  8
9.etc002         NA  9
10.etc002 0.5555556 10
11.etc002        NA 11
12.etc002 0.5000000 12
13.etc002        NA 13
14.etc002        NA 14
15.etc002 0.3333333 15
16.etc002        NA 16
17.etc002        NA 17
18.etc002 0.8888889 18
19.etc002        NA 19
20.etc002 0.2500000 20
21.etc002 0.4444444 21
22.etc002 0.6250000 22
23.etc002 0.4444444 23
24.etc002        NA 24
25.etc002 0.5555556 25
26.etc002        NA 26
27.etc002 0.4444444 27
28.etc002        NA 28
29.etc002        NA 29
30.etc002        NA 30
31.etc002        NA 31
32.etc002        NA 32
33.etc002        NA 33
34.etc002        NA 34
35.etc002        NA 35
36.etc002        NA 36
37.etc002        NA 37
38.etc002        NA 38
39.etc002 0.1111111 39
40.etc002 0.3750000 40
41.etc002        NA 41
42.etc002        NA 42
43.etc002        NA 43
44.etc002        NA 44
45.etc002        NA 45
46.etc002 0.5555556 46
47.etc002 0.5555556 47
48.etc002        NA 48
49.etc002        NA 49
50.etc002 0.5555556 50
51.etc002 0.6666667 51
52.etc002        NA 52
53.etc002        NA 53
54.etc002        NA 54
55.etc002        NA 55
56.etc002        NA 56
57.etc002        NA 57
1.etc003         NA  1
2.etc003         NA  2
3.etc003         NA  3
4.etc003         NA  4
5.etc003         NA  5
6.etc003         NA  6
7.etc003  1.0000000  7
8.etc003  0.6666667  8
9.etc003         NA  9
10.etc003        NA 10
11.etc003        NA 11
12.etc003        NA 12
13.etc003        NA 13
14.etc003        NA 14
15.etc003        NA 15
16.etc003        NA 16
17.etc003        NA 17
18.etc003        NA 18
19.etc003 0.9166667 19
20.etc003 0.9166667 20
21.etc003        NA 21
22.etc003        NA 22
23.etc003        NA 23
24.etc003        NA 24
25.etc003 1.0000000 25
26.etc003        NA 26
27.etc003        NA 27
28.etc003 0.9166667 28
29.etc003        NA 29
30.etc003        NA 30
31.etc003        NA 31
32.etc003        NA 32
33.etc003        NA 33
34.etc003        NA 34
35.etc003        NA 35
36.etc003        NA 36
37.etc003        NA 37
38.etc003        NA 38
39.etc003        NA 39
40.etc003        NA 40
41.etc003        NA 41
42.etc003 0.9166667 42
43.etc003        NA 43
44.etc003        NA 44
45.etc003        NA 45
46.etc003        NA 46
47.etc003 1.0000000 47
48.etc003 0.8333333 48
49.etc003        NA 49
50.etc003        NA 50
51.etc003        NA 51
52.etc003        NA 52
53.etc003        NA 53
54.etc003        NA 54
55.etc003        NA 55
56.etc003        NA 56
57.etc003        NA 57
1.etc004  0.7500000  1
2.etc004  0.6250000  2
3.etc004         NA  3
4.etc004  0.6250000  4
5.etc004         NA  5
6.etc004         NA  6
7.etc004         NA  7
8.etc004         NA  8
9.etc004         NA  9
10.etc004        NA 10
11.etc004 0.7500000 11
12.etc004 0.6250000 12
13.etc004        NA 13
14.etc004        NA 14
15.etc004        NA 15
16.etc004        NA 16
17.etc004        NA 17
18.etc004        NA 18
19.etc004        NA 19
20.etc004        NA 20
21.etc004 0.7500000 21
22.etc004        NA 22
23.etc004 0.3750000 23
24.etc004        NA 24
25.etc004 0.7500000 25
26.etc004        NA 26
27.etc004        NA 27
28.etc004        NA 28
29.etc004        NA 29
30.etc004        NA 30
31.etc004 1.0000000 31
32.etc004        NA 32
33.etc004        NA 33
34.etc004 0.6666667 34
35.etc004        NA 35
36.etc004        NA 36
37.etc004 1.0000000 37
38.etc004 0.5000000 38
39.etc004        NA 39
40.etc004        NA 40
41.etc004        NA 41
42.etc004        NA 42
43.etc004        NA 43
44.etc004        NA 44
45.etc004 0.7500000 45
46.etc004        NA 46
47.etc004        NA 47
48.etc004        NA 48
49.etc004        NA 49
50.etc004 0.8750000 50
51.etc004        NA 51
52.etc004        NA 52
53.etc004        NA 53
54.etc004 0.6250000 54
55.etc004        NA 55
56.etc004        NA 56
57.etc004 0.5000000 57
1.etc005         NA  1
2.etc005         NA  2
3.etc005         NA  3
4.etc005         NA  4
5.etc005  0.5000000  5
6.etc005         NA  6
7.etc005  0.6250000  7
8.etc005         NA  8
9.etc005         NA  9
10.etc005 1.0000000 10
11.etc005        NA 11
12.etc005        NA 12
13.etc005        NA 13
14.etc005 0.5000000 14
15.etc005        NA 15
16.etc005        NA 16
17.etc005        NA 17
18.etc005        NA 18
19.etc005        NA 19
20.etc005 0.7500000 20
21.etc005        NA 21
22.etc005        NA 22
23.etc005        NA 23
24.etc005        NA 24
25.etc005        NA 25
26.etc005        NA 26
27.etc005        NA 27
28.etc005 0.6250000 28
29.etc005        NA 29
30.etc005 0.8750000 30
31.etc005 0.6000000 31
32.etc005        NA 32
33.etc005 0.8750000 33
34.etc005        NA 34
35.etc005        NA 35
36.etc005        NA 36
37.etc005        NA 37
38.etc005        NA 38
39.etc005        NA 39
40.etc005        NA 40
41.etc005        NA 41
42.etc005        NA 42
43.etc005        NA 43
44.etc005        NA 44
45.etc005        NA 45
46.etc005        NA 46
47.etc005        NA 47
48.etc005 0.2500000 48
49.etc005        NA 49
50.etc005        NA 50
51.etc005        NA 51
52.etc005 0.8750000 52
53.etc005        NA 53
54.etc005 0.6250000 54
55.etc005        NA 55
56.etc005 0.3750000 56
57.etc005        NA 57
1.etc006  0.6666667  1
2.etc006         NA  2
3.etc006  0.8333333  3
4.etc006         NA  4
5.etc006         NA  5
6.etc006         NA  6
7.etc006         NA  7
8.etc006         NA  8
9.etc006         NA  9
10.etc006 0.8333333 10
11.etc006        NA 11
12.etc006        NA 12
13.etc006 0.8333333 13
14.etc006        NA 14
15.etc006 0.8333333 15
16.etc006        NA 16
17.etc006        NA 17
18.etc006        NA 18
19.etc006        NA 19
20.etc006        NA 20
21.etc006        NA 21
22.etc006        NA 22
23.etc006        NA 23
24.etc006        NA 24
25.etc006        NA 25
26.etc006 0.8333333 26
27.etc006        NA 27
28.etc006 0.5000000 28
29.etc006        NA 29
30.etc006        NA 30
31.etc006        NA 31
32.etc006        NA 32
33.etc006 0.8333333 33
34.etc006 0.6666667 34
35.etc006        NA 35
36.etc006        NA 36
37.etc006        NA 37
38.etc006        NA 38
39.etc006 0.5000000 39
40.etc006        NA 40
41.etc006        NA 41
42.etc006        NA 42
43.etc006        NA 43
44.etc006        NA 44
45.etc006 0.8333333 45
46.etc006        NA 46
47.etc006        NA 47
48.etc006        NA 48
49.etc006 1.0000000 49
50.etc006        NA 50
51.etc006        NA 51
52.etc006        NA 52
53.etc006        NA 53
54.etc006        NA 54
55.etc006        NA 55
56.etc006        NA 56
57.etc006        NA 57
1.inf001         NA  1
2.inf001         NA  2
3.inf001         NA  3
4.inf001         NA  4
5.inf001         NA  5
6.inf001         NA  6
7.inf001         NA  7
8.inf001         NA  8
9.inf001         NA  9
10.inf001        NA 10
11.inf001        NA 11
12.inf001        NA 12
13.inf001        NA 13
14.inf001 0.2857143 14
15.inf001        NA 15
16.inf001        NA 16
17.inf001        NA 17
18.inf001        NA 18
19.inf001 0.1428571 19
20.inf001        NA 20
21.inf001        NA 21
22.inf001 0.4285714 22
23.inf001 0.5714286 23
24.inf001        NA 24
25.inf001        NA 25
26.inf001        NA 26
27.inf001 0.4285714 27
28.inf001 0.2857143 28
29.inf001 0.7142857 29
30.inf001        NA 30
31.inf001        NA 31
32.inf001        NA 32
33.inf001        NA 33
34.inf001        NA 34
35.inf001 0.7142857 35
36.inf001 0.5714286 36
37.inf001        NA 37
38.inf001        NA 38
39.inf001        NA 39
40.inf001 0.5000000 40
41.inf001        NA 41
42.inf001        NA 42
43.inf001        NA 43
44.inf001        NA 44
45.inf001        NA 45
46.inf001        NA 46
47.inf001        NA 47
48.inf001        NA 48
49.inf001        NA 49
50.inf001 0.4285714 50
51.inf001 0.3333333 51
52.inf001        NA 52
53.inf001        NA 53
54.inf001        NA 54
55.inf001 1.0000000 55
56.inf001        NA 56
57.inf001        NA 57
1.inf002         NA  1
2.inf002         NA  2
3.inf002         NA  3
4.inf002         NA  4
5.inf002         NA  5
6.inf002         NA  6
7.inf002  0.3333333  7
8.inf002         NA  8
9.inf002         NA  9
10.inf002        NA 10
11.inf002        NA 11
12.inf002        NA 12
13.inf002        NA 13
14.inf002 0.5384615 14
15.inf002        NA 15
16.inf002        NA 16
17.inf002        NA 17
18.inf002        NA 18
19.inf002        NA 19
20.inf002        NA 20
21.inf002 0.8461538 21
22.inf002        NA 22
23.inf002        NA 23
24.inf002        NA 24
25.inf002        NA 25
26.inf002 0.9230769 26
27.inf002        NA 27
28.inf002 1.0000000 28
29.inf002        NA 29
30.inf002        NA 30
31.inf002        NA 31
32.inf002        NA 32
33.inf002        NA 33
34.inf002 0.6923077 34
35.inf002 0.7692308 35
36.inf002        NA 36
37.inf002        NA 37
38.inf002        NA 38
39.inf002 0.8461538 39
40.inf002        NA 40
41.inf002 0.6923077 41
42.inf002 0.9230769 42
43.inf002 0.7692308 43
44.inf002        NA 44
45.inf002        NA 45
46.inf002        NA 46
47.inf002        NA 47
48.inf002        NA 48
49.inf002 0.9230769 49
50.inf002        NA 50
51.inf002        NA 51
52.inf002        NA 52
53.inf002 0.8461538 53
54.inf002        NA 54
55.inf002        NA 55
56.inf002        NA 56
57.inf002 0.2307692 57
1.inf003         NA  1
2.inf003         NA  2
3.inf003         NA  3
4.inf003         NA  4
5.inf003         NA  5
6.inf003  0.5000000  6
7.inf003         NA  7
8.inf003         NA  8
9.inf003  0.5000000  9
10.inf003        NA 10
11.inf003 0.6666667 11
12.inf003        NA 12
13.inf003        NA 13
14.inf003 0.5000000 14
15.inf003        NA 15
16.inf003        NA 16
17.inf003 0.6666667 17
18.inf003        NA 18
19.inf003        NA 19
20.inf003        NA 20
21.inf003        NA 21
22.inf003        NA 22
23.inf003        NA 23
24.inf003        NA 24
25.inf003        NA 25
26.inf003        NA 26
27.inf003 0.6666667 27
28.inf003 0.5000000 28
29.inf003        NA 29
30.inf003        NA 30
31.inf003        NA 31
32.inf003        NA 32
33.inf003 0.6666667 33
34.inf003        NA 34
35.inf003        NA 35
36.inf003 0.5000000 36
37.inf003        NA 37
38.inf003        NA 38
39.inf003 0.0000000 39
40.inf003 0.3333333 40
41.inf003 0.3333333 41
42.inf003 1.0000000 42
43.inf003 0.3333333 43
44.inf003        NA 44

谢谢!

标签: rselectrow

解决方案


要在数据中选择以“etc”开头的列,您可以:

library(dplyr) #or tidyverse

your_data %>% select(starts_with('etc'))

在此处查看其他选择助手:

https://www.rdocumentation.org/packages/tidyselect/versions/0.2.5/topics/select_helpers

对于行,过滤器str_detect()应该可以工作:

my_data %>% filter(str_detect(column_name, 'etc'))

推荐阅读