2017-05-20 9 views
1
元データフレームに要約統計量を追加

イントロ:次いでベクターを要約した後、R

をIは、与えられたデータフレームにおける平均、標準偏差、及び数値ベクトルの標準誤差を計算したいとこれらの要約統計量を使用して3つの新しいベクトルを作成します。私は元のデータフレームと組み合わせる必要があります。

コード例:事前に

## Creating our dataframe: 
datetime <- c("5/12/2017 16:15:00","5/16/2017 16:45:00","5/19/2017 17:00:00") 
datetime <- as.POSIXct(datetime, format = "%m/%d/%Y %H:%M:%S") 
values <- c(1,2,3) 
df <- data.frame(datetime, values) 

## Here's the current output: 
head(df) 
      datetime values 
1 2017-05-12 16:15:00  1 
2 2017-05-16 16:45:00  2 
3 2017-05-19 17:00:00  3 

## And here's the desired output: 
head(df1) 
      datetime values mean sd se 
1 2017-05-12 16:15:00  1 2 0.816 0.471 
2 2017-05-16 16:45:00  2 2 0.816 0.471 
3 2017-05-19 17:00:00  3 2 0.816 0.471 

ありがとう!

なぜ私がこれをやろうとしているのか不思議な人のために、私はこれに従っていますtutorial。低コストのセンサーと高価なリファレンス機器との間のいくつかの較正では、エラーバーを持つ線グラフプロットの1つを作成する必要があります。

+1

新しい列を作成し、次のように平均を割り当てます。 'df $ mean < - mean(df $ values)'。 'sd'と最後の列の同じ手順に従います –

+0

うわー、あまりにも簡単でした、ありがとう!私はよく知っていたはずです...私はdplyrでこれを行う方法を理解しようとしていました... – spacedSparking

+1

代わりに: 'sd0 < - function(x){sd(x)/ sqrt(length(x))* sqrt (長さ(x)-1)}; se0 < - function(x){sd0(x)/ sqrt(length(x))}; df2 – mt1022

答えて

2

割り当てを同時に行うことができます。

sd0 <- function(x){sd(x)/sqrt(length(x)) * sqrt(length(x) - 1)} 
se0 <- function(x){ sd0(x)/sqrt(length(x))} 

次にあなたが試すことができます:あなたはすでにsdseのあなたの選択のためのヘルパー関数があるとします。ここ

df[c('mean', 'sd', 'se')] <- lapply(list(mean, sd0, se0), function(f) f(df$values)) 
# > df 
#    datetime values mean  sd  se 
# 1 2017-05-12 16:15:00  1 2 0.8164966 0.4714045 
# 2 2017-05-16 16:45:00  2 2 0.8164966 0.4714045 
# 3 2017-05-19 17:00:00  3 2 0.8164966 0.4714045 
+0

これは素晴らしい動作です!ありがとうございました! – spacedSparking

+0

@spaced Rのデフォルトの 'sd'の代わりに偏った見積もりを使う理由は?好奇心のために、なぜあなたはRのデフォルトの' sd'の代わりに偏り推定値を使うのですか? – mt1022

+1

これは良い質問です... 'df $ sd < - sd(df $値) 'と' sd0'関数です。私は 'sd(0.81')とsd(' 0.57'と '0.47')を見ています...' sd() '関数はサンプルの標準偏差を提供しているようです。関数は母集団の標準偏差を提供します...それは右のように聞こえるか? – spacedSparking

1

dplyrソリューションはsd0mt1022の答えで与えられたse0で、あります:

df %>% mutate("mean"=mean(values),"sd"=sd0(values),"se"=se0(values)) 
+0

これは素晴らしいです。共有ありがとう! – spacedSparking

関連する問題