【问题标题】:Is there a way to sum specific rows of a column?有没有办法对列的特定行求和?
【发布时间】:2020-10-17 02:53:24
【问题描述】:

A sample picture attached The sample dataset file 我有一个数据集(请参阅附件),我希望在其中根据特定标准对数字列“tdiff”求和,例如行 (1 + 2),行 (3 + 4) 但不是行 (11,12,13,14)。 我已经尝试过这些,但没有运气,

xx<- chaPe [rowSums(1:2, 3:4, 11, 12, 13, 14, 15:16),]
xx<- sum(chaPe $tdiff [c(1:2, 3:4, 11, 12, 13, 14, 15:16)],)

基本上,如果您查看“xsampa”列,只需将“tdiff”列中的“p”和“A”的数值相加即可。

预期结果是,例如,行 (1 +2),即 (0.068 + 0.011) = 0.079。 此外,总和如何影响其他列中的值,假设它们具有相同的值,除了列“rn”(这并不重要)。

我是 R 新手,因此任何帮助都会很棒,因为我无法弄清楚这一点。谢谢。

【问题讨论】:

    标签: r sum rowsum


    【解决方案1】:

    您可以在'p' 出现时创建一个新组,以便前 2 行形成一个组,接下来的 2 行形成另一个组,11:14 行保持原样。对于每个组,我们可以sum sum_tdiff 值。对于其他列,您可以决定要保留哪些值。例如,下面我保留FilenamePlace 列的first 值。

    library(dplyr)
    
    chaPe %>%
      group_by(grp = cumsum(xsampa == 'p')) %>%
      summarise(sum_tdiff = sum(tdiff), 
                Filename = first(Filename), 
                Place = first(Place)) -> result
    

    【讨论】:

    • 这正是我所需要的,@Ronak。总结数字列“tdiff”,其中“p”和“A”出现在“xsampa”列中。将“p”保留在下一行值后面不是“A”而是单独的“p”的位置。你是这个意思吗?另外,有没有办法,我不仅可以将“chaPe”分组,还可以将“文件名”列中包含的其他值(如“kute”“kutte”等)分组在同一代码中,以减少工作量?谢谢。
    • 是的,您可以在group_by 中包含多个变量,就像这样chaPe %&gt;% group_by(grp = cumsum(xsampa == 'p'), Filename, Consonant) %&gt;% summarise(sum_tdiff = sum(tdiff))
    • 仍然给我相同的输出。每当出现“A”时,将其前面的行与它相加不是更容易吗?
    • @Pranav_b 你的问题我不清楚。请手动计算输出的前 10-12 行并更新您的帖子以包含您的预期输出,以便我们知道您到底在寻找什么。
    • 我之前的评论(相同的输出)是错误的。请忽略。 :P
    【解决方案2】:

    另一种方法是,将Filename上的数据分组,下面是一个示例

    library(dplyr)
    result <- chaPe %>%
      group_by(Filename) %>%
      summarise(sum = sum(tdiff))
    
     Filename             sum
      <chr>              <dbl>
    1 AK_chape.TextGrid 0.0800
    2 DS_chape.TextGrid 0.0844
    3 MS_chape.TextGrid 0.0834
    4 NS_chape.TextGrid 0.0884
    5 PS_chape.TextGrid 0.0838
    6 RS_chape.TextGrid 0.0877
    
    

    【讨论】:

    • 感谢您的建议,@Agaz 但这会留下第 11、12、13、14 行。我也希望保留这些。
    • 您不需要删除行,您可以对所有行执行此操作,您将获得每个组的组总和。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多