Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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_Pivot Table - Fatal编程技术网

R中的透视表分析和基于子集数据的绘图

R中的透视表分析和基于子集数据的绘图,r,pivot-table,R,Pivot Table,我想用两种方法分析数据(就像excel中的透视表一样) 对于每个日期(天),我有多个值。我需要分别计算每个湖泊的P、N、C的平均值(仅一天,因为我仍然需要每日数据) 需要注意的一点是,我缺少的值不是零。所以平均值不应该受到这些缺失值的影响。 3) 然后在湖边画。所以,多个绘图,其中日期将在x轴上,并且(P,N,C)将在Y轴上 我用透视表在excel中进行了分析,结果是这样的。但是使用excel是乏味的。所以我想在R做这件事 lake date

我想用两种方法分析数据(就像excel中的透视表一样)

  • 对于每个日期(天),我有多个值。我需要分别计算每个湖泊的P、N、C的平均值(仅一天,因为我仍然需要每日数据)

  • 需要注意的一点是,我缺少的值不是零。所以平均值不应该受到这些缺失值的影响。 3) 然后在湖边画。所以,多个绘图,其中日期将在x轴上,并且(P,N,C)将在Y轴上

  • 我用透视表在excel中进行了分析,结果是这样的。但是使用excel是乏味的。所以我想在R做这件事

    lake                     date            P          N           C
    East Long Lake       9/5/1994          21.9      254.8
    East Long Lake       9/5/1994          30.1     1190.0       257.0
    East Long Lake       9/5/1994          20.5      256.6
    East Long Lake       9/5/1994          22.1      249.0
    East Long Lake       9/5/1994         212.5     2011.6      1090.6
    Central Long Lake   6/30/1995          22.9       91.1
    Central Long Lake   6/30/1995     
    Peter Lake           7/6/1994         41.9        527.2        29.6
    Peter Lake           7/6/1994         138.8      1994.0      1409.6
    Sparkling lake      7/13/1994          19.1       746.7        22.6 
    Sparkling Lake      7/13/1994         19.2        21.3
    

    使用
    dplyr
    并假设
    mydf
    是您的数据,我们可以:

    lake                     date            P          N           C
    East Long Lake       9/5/1994          61.42       792.4        673.8
    Central Long Lake   6/30/1995          22.9        91.1
    Peter Lake           7/6/1994          90.35      1260.6        719.6
    Sparkling Lake      7/13/1994          19.15       384           22.6
    

    这比我想象的要容易。使用data.table获取您要查找的内容,然后绘制与您所问的最后一个问题类似的图<代码>setDT(dat);dat=dat[(P=mean(P,na.rm=T),N=mean(N,na.rm=T),C=mean(C,na.rm=T)),by=(lake,date)]希望这有帮助!提供了'dat[(P=mean(P,na.rm=T),N=mean(N,na.rm=T),C=mean(C,na.rm=T)),by=(lake,date)]'by'或'keyby'中的错误,但不是j@Kristofersen我试过了,但得到了一个错误抱歉,忘记了第一个逗号。试试这个:
    setDT(dat);dat=dat[,(P=mean(P,na.rm=T),N=mean(N,na.rm=T),C=mean(C,na.rm=T)),by=(湖,日期)]
    library(dplyr)
    mydf %>% 
        group_by(lake, date) %>% 
        summarise_all(mean, na.rm = T)