Grepl() 对唯一值进行排序?

Grepl() to sort through unique values?

我正在尝试找到一种使用管道通过函数按字符向量的一部分对数据进行分组的方法。数据采用以下格式:ampXXiampXXXi ,其中 XXXXX。是唯一的站点代码,i 表示每个站点内的子站点。有没有一种方法可以按每个 ampXXiampXXXi 对数据进行分组?我尝试使用 grepl() 对函数进行排序,但这没有用。感谢您的任何建议。

substr() 获取字符串变量的一部分进行分组

您可以使用 substr() 提取唯一站点 ID,并使用变量对数据进行分组。

示例数据框:

df <- data.frame(
          x = c("amp22i", "amp333i", "amp11i", "amp22i", "amp11i", "amp333i"),
          y = c(1:6), 
          stringsAsFactors = FALSE)

df

#         x y
# 1  amp22i 1
# 2 amp333i 2
# 3  amp11i 3
# 4  amp22i 4
# 5  amp11i 5
# 6 amp333i 6

substr() 从字符串

的一部分创建组 ID 变量
library(dplyr)
library(magrittr)

df %<>% 
  mutate(id = substr(x,4, nchar(x)))

df

#          x y   id
#  1  amp22i 1  22i
#  2 amp333i 2 333i
#  3  amp11i 3  11i
#  4  amp22i 4  22i
#  5  amp11i 5  11i
#  6 amp333i 6 333i

使用管道分组/group_by 并获取组均值。

df %>% 
  group_by(id) %>% 
  summarize(mean = mean(y))

# # A tibble: 3 x 2
#   id     mean
#   <chr> <dbl>
# 1 11i     4  
# 2 22i     2.5
# 3 333i    4 

上述有 tidyverse 个替代方案,例如str_sub()str_length() mutate()