r - 如何选择数字后缀小于某个值的变量

标签 r select dplyr suffix

我有一个与此类似的数据框。

df <- data.frame(id=c(1,2,3), tot_1=runif(3, 0, 100), tot_2=runif(3, 0, 100), tot_3=runif(3, 0, 100), tot_4=runif(3, 0, 100))

我只想选择或只对后缀小于3的进行操作。

#select
df <- df %>% select(id, tot_1, tot_2)
#or sum
df <- df %>% mutate(sumVar = rowSums(across(c(tot_1, tot_2))))

然而,在我的真实数据中,还有更多变量,而且不按顺序排列。那么我怎样才能在不手动操作的情况下选择它们呢?

最佳答案

我们可以使用匹配

df %>% 
    mutate(sumVar = rowSums(across(matches('tot_[1-2]$'))))

如果我们需要更灵活,请从以“tot”开头的列名称中提取数字部分,根据条件进行子集并使用新名称

library(stringr)
nm1 <- str_subset(names(df), 'tot')
nm2 <-  nm1[readr::parse_number(nm1) <3]
df %>%
    mutate(sumVar = rowSums(across(all_of(nm2))))

关于r - 如何选择数字后缀小于某个值的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69137087/

相关文章:

php - 如何使用 php 预选一个 html 下拉列表?

mysql - 如何从多个表中选择同一列

r - 用于检查和批量线性模型的数据表选项

r - 基于向量子集索引数据帧

r - 基于元素序列的向量修改

python - Python 中 R 的 qqplot 的等价物

iphone - 如何使 UITextView 文本全部可选并向用户 iPhone 应用程序显示复制选项?

r - 类似于 R 中的 Pandas Series.value_counts()?

r - sym 无效参数类型

R:如何按列删除重复的行