2017-10-15 39 views
-1

我希望我能夠很好地解釋我自己,而不是問一個重複的問題。如果將函數應用於r列中的每一行,就像在excel中那樣

我有一個CSV文件,其中有一列銷售。在該列中,我想應用一個邏輯函數,如果這樣,那麼該列中的每一行都會被計算並返回所選行的最大值。我是新來的,擅長做所有我的工作,所以我遇到困難。

Price Price Events Units  Sales  Sales/Event Returned Price 
2.31 1    737  1702  1702 
2.33 1    928  2162  2162   2.33 
2.36 2    1660  3918  1959 
2.42 1    861  2084  2084 

每事件的列銷售我想申請,其中,如果(和(Sales_Per_Event $ 2> Sales_Per_Event $ 1,Sales_Per_Event $ 2> Sales_Per_Event $ 3價$ 2, 「」))

+0

請不要將數據發佈爲圖片,編輯您的問題併發布'dput(Sales_Per_Event)'的輸出。 –

+0

在你的問題中包括一個[最小可重現的例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)將增加你獲得答案的機會。 – jsb

+0

爲什麼returned_price只有1個值? –

回答

0

我相信功能我終於明白了你的問題。如果不是這樣說的話。
一,數據。

dat <- 
structure(list(Price = c(2.31, 2.33, 2.36, 2.42), Price_Events = c(1L, 
1L, 2L, 1L), Units = c(737L, 928L, 1660L, 861L), Sales = c(1702L, 
2162L, 3918L, 2084L), Sales_per_Event = c(1702L, 2162L, 1959L, 
2084L)), .Names = c("Price", "Price_Events", "Units", "Sales", 
"Sales_per_Event"), class = "data.frame", row.names = c(NA, -4L 
)) 

現在,代碼。

# 
# Input x - Sales_per_Event 
#   y - Price 
# Returns z - Returned_Price 
# 
abhik <- function(x, y){ 
    n <- length(x) 
    z <- numeric(n) 
    z[1] <- NA 
    z[n] <- NA 
    for(i in seq_along(x)[-c(1, n)]){ 
     if(x[i] > x[i - 1] && x[i] > x[i + 1]) 
      z[i] <- y[i] 
     else 
      z[i] <- NA 
    } 
    z 
} 

abhik(dat$Sales_per_Event, dat$Price) 
#[1] NA 2.33 NA NA 

dat$Returned_Price <- abhik(dat$Sales_per_Event, dat$Price) 
dat 

請注意,我已經選擇了,而不是NA空白字符值,因爲空白將改變你的整個柱成字符,或者更糟糕的因素。

+0

非常感謝它的工作,真的很感激它。現在只需要瞭解自己的功能。 –

+0

輸入'dat $ Sales_per_Event'爲'x','dat $ Price'爲'y'。它返回新列「dat $ Returned_Price」。也許我應該在答案中寫下這個問題? –

+0

你現在對我有意義:) –

相關問題