【问题标题】:Pivot table analysis in R and plotting based on subset data [closed]R中的数据透视表分析和基于子集数据的绘图[关闭]
【发布时间】:2017-02-14 20:00:45
【问题描述】:
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

我想以多种方式分析数据(就像 excel 中的数据透视表)

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

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

我通过数据透视表在 excel 中进行了分析,结果看起来像这样。但是使用excel很乏味。所以我正在寻找在 R 中做这件事。

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 = .(lake, date)]

标签: r pivot-table


【解决方案1】:

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

library(dplyr)
mydf %>% 
    group_by(lake, date) %>% 
    summarise_all(mean, na.rm = T)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    相关资源
    最近更新 更多