我有一个与此类似的数据框。
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/