ダニデータの一部をクリーニングしようとしています。私のデータは長い形式です。ワイドに変換すると、 Error: Duplicate identifiers for rows
と表示されます。 [時間]列には、数日間のタイムスタンプがあります。 SYM列には多くの株式の株価記号があります。これは私のサンプルデータです:NON DISTINCTタイムスタンプの列値の中央値を取る方法
dput(jojo)
structure(list(Time = structure(c(1459481850, 1459481850, 1459482302,
1459482305, 1459482305, 1459482307, 1459482307, 1459482309, 1459482312,
1459482312, 1459482314, 1459482314, 1459482316, 1459482316, 1459482317,
1459482317, 1459482318, 1459482319, 1459482319, 1459482320), class = c("POSIXct",
"POSIXt"), tzone = "Asia/Calcutta"), PRICE = c(1371.25, 1371.25,
1373.95, 1373, 1373, 1373.95, 1373.95, 1373.9, 1374, 1374, 1374.15,
1374.15, 1374, 1374, 1373.85, 1373.85, 1372.55, 1374.05, 1374.05,
1374.15), SIZE = c(39, 58, 5, 4, 7, 20, 5, 10, 21, 179, 10, 100,
98, 78, 14, 11, 30, 10, 11, 39), SYM = c("A", "A", "A", "A",
"A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B",
"B", "B", "B")), .Names = c("Time", "PRICE", "SIZE", "SYM"), row.names = c(NA,
20L), class = "data.frame")
私は、これらのタイムスタンプのために価格とサイズの中央値を取り、価格の中央値を含む単一の行にこれらの同じタイムスタンプ列を置き換える最初、同じタイムスタンプを見つける必要があるとデータセットのSIZE。しかし、私のコードは、株価記号と同じタイムスタンプ行ではなく、列全体を要約しています。これは私の試みです:
#Cleaning duplicate time stamps
tt<- jojo %>%group_by(SYM)%>% summarise(Time = ifelse(n() >= 2, median, mean))
#Making wide form
tt<-spread(tt, SYM, PRICE)
私はこのエラーを取得しています:
Error in eval(substitute(expr), envir, enclos) : Not a vector
は修正を提案してください。高周波数パッケージを使わずにクリーニングを実行できるといいですね。
あなたが提供した例の期待される出力とは何ですか? 'Error:Not a Vector'は、' median'と 'mean'の変数を定義していないためです。 – Sotos
各在庫の重複タイムスタンプのPRICEとSIZEの中央値を取っています。 – runjumpfly
sp> jojo%>%group_by(Time、SYM)%>%mutate(PRICE =中央値(PRICE)、SIZE =中央値(SIZE))%>%フィルタ(重複(時間)) '? – Sotos