在列中的每一行中添加一个空格,空格位置取决于字符长度



我想在数据帧中的一列的每一行中添加一个空白。根据数据类型,此列是字符。此空白的位置取决于每行中字符串的长度。

例如,对于该特定列中的所有行,所有少于6个字符的行都应该在第二个字符之后有空白,而那些有7个或更多字符的行应该在第四个字符之后有空白

例如,查看Iris数据集和Species列,对于setosa行,我希望在第二个字符后面有一个空白,所以";setosa";变成";se tosa";

我知道这将是一个ifelse声明,但我不确定如何进行

您可以首先确定iris$Species:中的字符数

iris$Species_char <- nchar(as.character(iris$Species))

基于这个新列,您可以定义一个ifelse语句,其中iris$Species_char <= 6是您的条件,如果条件计算为TRUE,则在第二个字符后插入空格作为要执行的操作,如果条件评估为FALSE,则在第四个字符后插入空白作为要执行操作。为了确保插入点之前和之后的字符被回收,我们使用backreference,\1指回之前的字符,\2指回插入点之后的字符:

iris$Species <- ifelse(iris$Species_char <= 6, 
sub("(\w{2})(.*)", "\1 \2", iris$Species), 
sub("(\w{4})(.*)", "\1 \2", iris$Species))

以上两步合一:

iris$Species <- ifelse(nchar(iris$Species) <= 6, 
sub("(\w{2})(.*)", "\1 \2", iris$Species), 
sub("(\w{4})(.*)", "\1 \2", iris$Species))

编辑:使用dplyrstringr:

library(dplyr)
library(stringr)
iris %>%
mutate(Species = if_else(str_count(Species) <= 6, sub("(\w{2})(.*)", "\1 \2", Species), sub("(\w{4})(.*)", "\1 \2", Species)))

结果:

iris
Sepal.Length Sepal.Width Petal.Length Petal.Width     Species Species_char
1            5.1         3.5          1.4         0.2     se tosa            6
2            4.9         3.0          1.4         0.2     se tosa            6
3            4.7         3.2          1.3         0.2     se tosa            6
4            4.6         3.1          1.5         0.2     se tosa            6
5            5.0         3.6          1.4         0.2     se tosa            6
6            5.4         3.9          1.7         0.4     se tosa            6
7            4.6         3.4          1.4         0.3     se tosa            6
8            5.0         3.4          1.5         0.2     se tosa            6
9            4.4         2.9          1.4         0.2     se tosa            6
10           4.9         3.1          1.5         0.1     se tosa            6
11           5.4         3.7          1.5         0.2     se tosa            6
12           4.8         3.4          1.6         0.2     se tosa            6
13           4.8         3.0          1.4         0.1     se tosa            6
14           4.3         3.0          1.1         0.1     se tosa            6
15           5.8         4.0          1.2         0.2     se tosa            6
16           5.7         4.4          1.5         0.4     se tosa            6
17           5.4         3.9          1.3         0.4     se tosa            6
18           5.1         3.5          1.4         0.3     se tosa            6
19           5.7         3.8          1.7         0.3     se tosa            6
20           5.1         3.8          1.5         0.3     se tosa            6
21           5.4         3.4          1.7         0.2     se tosa            6
22           5.1         3.7          1.5         0.4     se tosa            6
23           4.6         3.6          1.0         0.2     se tosa            6
24           5.1         3.3          1.7         0.5     se tosa            6
25           4.8         3.4          1.9         0.2     se tosa            6
26           5.0         3.0          1.6         0.2     se tosa            6
27           5.0         3.4          1.6         0.4     se tosa            6
28           5.2         3.5          1.5         0.2     se tosa            6
29           5.2         3.4          1.4         0.2     se tosa            6
30           4.7         3.2          1.6         0.2     se tosa            6
31           4.8         3.1          1.6         0.2     se tosa            6
32           5.4         3.4          1.5         0.4     se tosa            6
33           5.2         4.1          1.5         0.1     se tosa            6
34           5.5         4.2          1.4         0.2     se tosa            6
35           4.9         3.1          1.5         0.2     se tosa            6
36           5.0         3.2          1.2         0.2     se tosa            6
37           5.5         3.5          1.3         0.2     se tosa            6
38           4.9         3.6          1.4         0.1     se tosa            6
39           4.4         3.0          1.3         0.2     se tosa            6
40           5.1         3.4          1.5         0.2     se tosa            6
41           5.0         3.5          1.3         0.3     se tosa            6
42           4.5         2.3          1.3         0.3     se tosa            6
43           4.4         3.2          1.3         0.2     se tosa            6
44           5.0         3.5          1.6         0.6     se tosa            6
45           5.1         3.8          1.9         0.4     se tosa            6
46           4.8         3.0          1.4         0.3     se tosa            6
47           5.1         3.8          1.6         0.2     se tosa            6
48           4.6         3.2          1.4         0.2     se tosa            6
49           5.3         3.7          1.5         0.2     se tosa            6
50           5.0         3.3          1.4         0.2     se tosa            6
51           7.0         3.2          4.7         1.4 vers icolor           10
52           6.4         3.2          4.5         1.5 vers icolor           10
53           6.9         3.1          4.9         1.5 vers icolor           10
54           5.5         2.3          4.0         1.3 vers icolor           10
55           6.5         2.8          4.6         1.5 vers icolor           10
56           5.7         2.8          4.5         1.3 vers icolor           10
57           6.3         3.3          4.7         1.6 vers icolor           10
58           4.9         2.4          3.3         1.0 vers icolor           10
59           6.6         2.9          4.6         1.3 vers icolor           10
60           5.2         2.7          3.9         1.4 vers icolor           10
61           5.0         2.0          3.5         1.0 vers icolor           10
62           5.9         3.0          4.2         1.5 vers icolor           10
63           6.0         2.2          4.0         1.0 vers icolor           10
64           6.1         2.9          4.7         1.4 vers icolor           10
65           5.6         2.9          3.6         1.3 vers icolor           10
66           6.7         3.1          4.4         1.4 vers icolor           10
67           5.6         3.0          4.5         1.5 vers icolor           10
68           5.8         2.7          4.1         1.0 vers icolor           10
69           6.2         2.2          4.5         1.5 vers icolor           10
70           5.6         2.5          3.9         1.1 vers icolor           10
71           5.9         3.2          4.8         1.8 vers icolor           10
72           6.1         2.8          4.0         1.3 vers icolor           10
73           6.3         2.5          4.9         1.5 vers icolor           10
74           6.1         2.8          4.7         1.2 vers icolor           10
75           6.4         2.9          4.3         1.3 vers icolor           10
76           6.6         3.0          4.4         1.4 vers icolor           10
77           6.8         2.8          4.8         1.4 vers icolor           10
78           6.7         3.0          5.0         1.7 vers icolor           10
79           6.0         2.9          4.5         1.5 vers icolor           10
80           5.7         2.6          3.5         1.0 vers icolor           10
81           5.5         2.4          3.8         1.1 vers icolor           10
82           5.5         2.4          3.7         1.0 vers icolor           10
83           5.8         2.7          3.9         1.2 vers icolor           10
84           6.0         2.7          5.1         1.6 vers icolor           10
85           5.4         3.0          4.5         1.5 vers icolor           10
86           6.0         3.4          4.5         1.6 vers icolor           10
87           6.7         3.1          4.7         1.5 vers icolor           10
88           6.3         2.3          4.4         1.3 vers icolor           10
89           5.6         3.0          4.1         1.3 vers icolor           10
90           5.5         2.5          4.0         1.3 vers icolor           10
91           5.5         2.6          4.4         1.2 vers icolor           10
92           6.1         3.0          4.6         1.4 vers icolor           10
93           5.8         2.6          4.0         1.2 vers icolor           10
94           5.0         2.3          3.3         1.0 vers icolor           10
95           5.6         2.7          4.2         1.3 vers icolor           10
96           5.7         3.0          4.2         1.2 vers icolor           10
97           5.7         2.9          4.2         1.3 vers icolor           10
98           6.2         2.9          4.3         1.3 vers icolor           10
99           5.1         2.5          3.0         1.1 vers icolor           10
100          5.7         2.8          4.1         1.3 vers icolor           10
101          6.3         3.3          6.0         2.5  virg inica            9
102          5.8         2.7          5.1         1.9  virg inica            9
103          7.1         3.0          5.9         2.1  virg inica            9
104          6.3         2.9          5.6         1.8  virg inica            9
105          6.5         3.0          5.8         2.2  virg inica            9
106          7.6         3.0          6.6         2.1  virg inica            9
107          4.9         2.5          4.5         1.7  virg inica            9
108          7.3         2.9          6.3         1.8  virg inica            9
109          6.7         2.5          5.8         1.8  virg inica            9
110          7.2         3.6          6.1         2.5  virg inica            9
111          6.5         3.2          5.1         2.0  virg inica            9
112          6.4         2.7          5.3         1.9  virg inica            9
113          6.8         3.0          5.5         2.1  virg inica            9
114          5.7         2.5          5.0         2.0  virg inica            9
115          5.8         2.8          5.1         2.4  virg inica            9
116          6.4         3.2          5.3         2.3  virg inica            9
117          6.5         3.0          5.5         1.8  virg inica            9
118          7.7         3.8          6.7         2.2  virg inica            9
119          7.7         2.6          6.9         2.3  virg inica            9
120          6.0         2.2          5.0         1.5  virg inica            9
121          6.9         3.2          5.7         2.3  virg inica            9
122          5.6         2.8          4.9         2.0  virg inica            9
123          7.7         2.8          6.7         2.0  virg inica            9
124          6.3         2.7          4.9         1.8  virg inica            9
125          6.7         3.3          5.7         2.1  virg inica            9
126          7.2         3.2          6.0         1.8  virg inica            9
127          6.2         2.8          4.8         1.8  virg inica            9
128          6.1         3.0          4.9         1.8  virg inica            9
129          6.4         2.8          5.6         2.1  virg inica            9
130          7.2         3.0          5.8         1.6  virg inica            9
131          7.4         2.8          6.1         1.9  virg inica            9
132          7.9         3.8          6.4         2.0  virg inica            9
133          6.4         2.8          5.6         2.2  virg inica            9
134          6.3         2.8          5.1         1.5  virg inica            9
135          6.1         2.6          5.6         1.4  virg inica            9
136          7.7         3.0          6.1         2.3  virg inica            9
137          6.3         3.4          5.6         2.4  virg inica            9
138          6.4         3.1          5.5         1.8  virg inica            9
139          6.0         3.0          4.8         1.8  virg inica            9
140          6.9         3.1          5.4         2.1  virg inica            9
141          6.7         3.1          5.6         2.4  virg inica            9
142          6.9         3.1          5.1         2.3  virg inica            9
143          5.8         2.7          5.1         1.9  virg inica            9
144          6.8         3.2          5.9         2.3  virg inica            9
145          6.7         3.3          5.7         2.5  virg inica            9
146          6.7         3.0          5.2         2.3  virg inica            9
147          6.3         2.5          5.0         1.9  virg inica            9
148          6.5         3.0          5.2         2.0  virg inica            9
149          6.2         3.4          5.4         2.3  virg inica            9
150          5.9         3.0          5.1         1.8  virg inica            9

最新更新