2017-09-06 119 views
0

我有這樣一個數據集:如何計算中的R值的平均值在循環

Date_A Date_B Type Price 
2345 2400 A 120 
1115 1230 B 226 
930  945  C 90 
1050 1100 A 157 

我想從類型列打印值,其中Date_A的值小於Date_B。對於這部分我做了以下代碼:

for(i in 1:length(list)){ 
     if(`Date_A`[i]<`Date_B`[i]){ 
     print(Type[i]) 
     } 
    } 

此代碼正常工作。現在我想計算我之前打印的類型值的價格列的總平均值,其中類型是Date_A < Date_B。我覺得做這樣的:

for(i in 1:length(list)){ 
    if(`Date_A`[i]<`Date_B`[i]){ 
    print(Type[i]) 
    Price_Average[i] <- mean(Price) 
    } 

然而,這只是給了我整個數據集的總平均和我想要的價格,其中Date_A < Date_B的平均值。我想弄清楚如何使用循環來計算這個問題,因爲我在R中練習循環。

回答

1

如果沒有示例數據很難去追蹤你的問題,但我會盡力的。該行

which(`Date_A` < `Date_B`) 

應該給你所有行的索引,其中Data A < Data B。所以

Price[which(`Date_A` < `Date_B`)] 

都是價格在那裏Data_A < Data_B,而這將會給你答案:

mean(Price[which(`Date_A` < `Date_B`)]) 
+0

嗨@lebelinoz,抱歉沒有把我的問題中的數據集樣本。我編輯了這個問題,試圖使其更加清晰。 – user3116949

+0

在這種情況下,我的答案仍然或多或少。如果您的數據框被稱爲'df',則需要在每列之前放置一個'df $'。即最終答案將是'mean(df $ Price [which(df $ Date_A lebelinoz

+0

如果不是所有的Date_A都小於Date_B,那麼可能是更好的示例數據集:) – neilfws

3

我不知道我知道你想要什麼。試試這個:

mean(Price[Date_A < Date_B])

1

假設你有一個欄目「Date_A」命名DF數據幀,「Date_B」,「價格」,而除了上述主張,你可以嘗試:

lg <- ifelse(df$Date_A<df$Date_B,TRUE,FALSE) mean(df$Price[lg])