Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数据帧中创建一行,该行是R中其他行的总和?_R_Dataframe_Rows_Plyr - Fatal编程技术网

如何在数据帧中创建一行,该行是R中其他行的总和?

如何在数据帧中创建一行,该行是R中其他行的总和?,r,dataframe,rows,plyr,R,Dataframe,Rows,Plyr,我正在处理一个从csv文件中提取的数据帧,并尝试生成一行,该行是许多其他行的总和 我尝试过使用colSums、numcolwise和许多其他函数,但我总是遇到各种各样的错误。当使用colSums时,我得到一个错误,即我不能使用colSums函数,因为我的数据帧不是数字 所以 如何将数据框中的所有数值读取为数字?及 如何生成一行,将所有适用的行相加 您可以使用is.numeric来标识列数值列,并过滤掉非数值变量/列。请参见下面的示例: df <- data.frame( a = let

我正在处理一个从csv文件中提取的数据帧,并尝试生成一行,该行是许多其他行的总和

我尝试过使用colSums、numcolwise和许多其他函数,但我总是遇到各种各样的错误。当使用colSums时,我得到一个错误,即我不能使用colSums函数,因为我的数据帧不是数字

所以

  • 如何将数据框中的所有数值读取为数字?及
  • 如何生成一行,将所有适用的行相加

  • 您可以使用
    is.numeric
    来标识列数值列,并过滤掉非数值变量/列。请参见下面的示例:

    df <- data.frame(
      a = letters[1:10],
      b = 1:10,
      c = (1:10) / 100,
      d = (1:10) / 50
    )
    
    str(df)
    # 'data.frame': 10 obs. of  3 variables:
    #  $ a: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
    #  $ b: int  1 2 3 4 5 6 7 8 9 10
    #  $ c: num  0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
    #  $ d: num  0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2
    
    df_nums <- df[, sapply(df, is.numeric)]
    str(df_nums)
    # 'data.frame': 10 obs. of  2 variables:
    # $ b: int  1 2 3 4 5 6 7 8 9 10
    # $ c: num  0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
    # $ d: num  0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2
    
    rowSums(df_nums)
    # [1]  1.01  2.02  3.03  4.04  5.05  6.06  7.07  8.08  9.09 10.10
    

    df请使用
    dput(head(dataset,20))
    的输出编辑问题,其中
    dataset
    是您的数据框的名称。如果您的数据不是数字,那么期望对其进行汇总是不合理的。您可以通过键入
    sapply(df,class)
    (其中df被替换为数据帧的名称)来查看哪些列导致了您的问题。我的回答可能会对您有所帮助:您可以使用
    rowSums
    而不是
    rowMeans