Dataframe dplyr在一定数量的列上重复变异

Dataframe dplyr在一定数量的列上重复变异,dataframe,dplyr,stringr,mutate,Dataframe,Dplyr,Stringr,Mutate,我有一个900列的数据框。我想为整个数据帧dplyr::transmute(例如,sum)列1:3、4:6、7:9,等等。新的子列名可以通过使用父列名中的文本来创建,当然不能与其他列名匹配。我该怎么做? 非常感谢:) 具有6列的df示例: int_sam_1 = c("2421432", "24242424", "NA", "4684757849", "NA", "10485040", "NA", "6849400", "40300", "NA", "NA", "N

我有一个900列的数据框。我想为整个数据帧
dplyr::transmute
(例如,sum)列1:3、4:6、7:9,等等。新的子列名可以通过使用父列名中的文本来创建,当然不能与其他列名匹配。我该怎么做? 非常感谢:)

具有6列的df示例:

int_sam_1 = c("2421432", "24242424", "NA", "4684757849", "NA", "10485040", "NA", 
              "6849400", "40300", "NA", "NA", "NA", "556456466", "4646456466", "246464266", "4564242646")
int_sam_2 = c("NA", "5342353", "14532556", "43566", "46367367", "768769769", "797899", "NA", "NA", "NA", 
              "686899", "7898979", "678568", "NA", "68886", "488")
int_sam_3 = c("11351", "NA", "NA", "NA", "1354151345", "1351351354", "314534", "1535", "3145354", "4353455", 
              "324535", "3543445", "34535", "34535534", "NA", "NA")
int_sam_1a = c("2421432", "24242424", "NA", "4684757849", "NA", "10485040", "NA", 
              "6849400", "40300", "NA", "NA", "NA", "556456466", "4646456466", "246464266", "4564242646")
int_sam_2a = c("NA", "5342353", "14532556", "43566", "46367367", "768769769", "797899", "NA", "NA", "NA", 
              "686899", "7898979", "678568", "NA", "68886", "488")
int_sam_3a = c("11351", "NA", "NA", "NA", "1354151345", "1351351354", "314534", "1535", "3145354", "4353455", 
              "324535", "3543445", "34535", "34535534", "NA", "NA")

df = cbind.data.frame(int_sam_1, int_sam_2, int_sam_3, int_sam_1a, int_sam_2a, int_sam_3a)

如果没有特定的dplyr需求,这里有一个基本的dplyr解决方案:

df <- cbind.data.frame(int_sam_1, int_sam_2, int_sam_3, int_sam_1a, int_sam_2a, int_sam_3a)
df <- data.frame(apply(df,2,as.numeric))

谢谢你,阿比。获取此错误:seq.default(n,n+2)中的错误:'from'的长度必须为1它在我的设置中起作用,但我猜测sapply可能会将n的值作为数字以外的值传递,可能是命名向量。在函数fn的代码中,我已将n替换为as.numeric(n)。试试看,让我知道。您还可以在上联机运行代码以查看输出您可以添加您尝试获取的输出吗?
fn <- function(df,n) {
    df1 <- data.frame( rowSums(df[,seq(as.numeric(n),as.numeric(n)+2)], na.rm = TRUE) ) 
    colnames(df1) <- paste0(colnames(df[,seq(as.numeric(n),as.numeric(n)+2)]), collapse = '.')
    return(df1)
}
df2 <- data.frame(sapply(seq(1,ncol(df),3), fn, df = df ))

df2
      int_sam_1.int_sam_2.int_sam_3      int_sam_1a.int_sam_2a.int_sam_3a
1                        2432783                          2432783
2                       29584777                         29584777
3                       14532556                         14532556
4                     4684801415                       4684801415
5                     1400518712                       1400518712
6                     2130606163                       2130606163
....