如何使用dplyr重命名块中具有模式的行

如何使用dplyr重命名块中具有模式的行,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我有以下数据帧(TIBLE): 如何重命名V2中的行,使其变成这样: A foo.w 9394981 B bar.x 6826405 C qux.y 1074885 D gop.z 1493691 A foo.w 100 B bar.x 200 C qux.y 300 D gop.z 400 #如果V2的顺序是foo、bar、qux、gop dat%>%突变(V2=粘贴(V2,c(“

我有以下数据帧(TIBLE):

如何重命名
V2
中的行,使其变成这样:

  A    foo.w 9394981
  B    bar.x 6826405
  C    qux.y 1074885
  D    gop.z 1493691
  A    foo.w     100
  B    bar.x     200
  C    qux.y     300
  D    gop.z     400
#如果V2的顺序是foo、bar、qux、gop
dat%>%突变(V2=粘贴(V2,c(“w”,“x”,“y”,“z”),sep=“.”)
#一个tibble:8×3
V1 V2 V3
1 A foo.w 9394981
2巴x 6826405
3 C qux.y 1074885
4 D gop.z 1493691
5 A foo.w 100
6B巴x200
7立方厘米300立方厘米
8D gop.z 400
#如果不是,则创建查找
查找%mutate(V2=查找[as.character(V2)])
#一个tibble:8×3
V1 V2 V3
1 A foo.w 9394981
2巴x 6826405
3 C qux.y 1074885
4 D gop.z 1493691
5 A foo.w 100
6B巴x200
7立方厘米300立方厘米
8D gop.z 400
#如果V2的顺序是foo、bar、qux、gop
dat%>%突变(V2=粘贴(V2,c(“w”,“x”,“y”,“z”),sep=“.”)
#一个tibble:8×3
V1 V2 V3
1 A foo.w 9394981
2巴x 6826405
3 C qux.y 1074885
4 D gop.z 1493691
5 A foo.w 100
6B巴x200
7立方厘米300立方厘米
8D gop.z 400
#如果不是,则创建查找
查找%mutate(V2=查找[as.character(V2)])
#一个tibble:8×3
V1 V2 V3
1 A foo.w 9394981
2巴x 6826405
3 C qux.y 1074885
4 D gop.z 1493691
5 A foo.w 100
6B巴x200
7立方厘米300立方厘米
8D gop.z 400
> dat
# A tibble: 8 × 3
      V1     V2      V3
  <fctr> <fctr>   <dbl>
1      A    foo 9394981
2      B    bar 6826405
3      C    qux 1074885
4      D    gop 1493691
5      A    foo     100
6      B    bar     200
7      C    qux     300
8      D    gop     400
  A    foo.w 9394981
  B    bar.x 6826405
  C    qux.y 1074885
  D    gop.z 1493691
  A    foo.w     100
  B    bar.x     200
  C    qux.y     300
  D    gop.z     400
# If V2 is in the order of foo, bar, qux, gop
dat %>% mutate(V2=paste(V2, c("w", "x", "y", "z"), sep="."))
# A tibble: 8 × 3
      V1    V2      V3
  <fctr> <chr>   <dbl>
1      A foo.w 9394981
2      B bar.x 6826405
3      C qux.y 1074885
4      D gop.z 1493691
5      A foo.w     100
6      B bar.x     200
7      C qux.y     300
8      D gop.z     400

# If not, create a lookup
lookup <- c("foo"="foo.w", "bar"="bar.x", "qux"="qux.y", "gop"="gop.z")
dat %>% mutate(V2=lookup[as.character(V2)])
# A tibble: 8 × 3
      V1    V2      V3
  <fctr> <chr>   <dbl>
1      A foo.w 9394981
2      B bar.x 6826405
3      C qux.y 1074885
4      D gop.z 1493691
5      A foo.w     100
6      B bar.x     200
7      C qux.y     300
8      D gop.z     400