這是我在StackOverflow上的第一個問題。我將盡我所能使它簡明扼要,如果不是,我很抱歉。我也是R的新手。我在StackOverflow上瀏覽了一下我的問題的答案。我發現了一些有用的東西,但我不確定哪些方法最適合使用,或者如何將它們組合在一起以使其工作。基於另一列中的行子集取得多個列的最大值
我有一個這樣的數據集,名爲「PER1」
Day Stat1 Stat2 Stat3
10 2.12 1.84 2.11
10 2.09 1.87 2.07
10 2.08 1.92 2.07
11 1.90 1.85 1.88
11 1.87 1.85 1.93
11 1.86 1.87 1.93
我想要做的就是找到數據的每一天每一個「統計」一欄的最大值是什麼。換句話說,每列中計算最大值的行是在「日」列中包含相同值的行。輸出將如下所示:
Day MaxStat1 MaxStat2 MaxStat3
10 2.12 1.92 2.11
11 1.87 1.87 1.93
我想打一個循環,定義了在日列中唯一值的數量,然後使用該定義的最大將從每列來計算的行。但我堅持如何根據獨特的日子將最大函數獲取到每列中的子集行。我至今很粗糙,我甚至不能確定它遵循正確的[R規則(再次,新R)
days <- unique(per1$Day)
stations <- per1[,1:3]
l <- length(days)
for (k in 1:l) {
curr_day <- subset(per1, per1$Day == days[k]) ##this defines the individual day
curr_stn <- stations[curr_day,] ##this is supposed to define the number of rows as the number of rows in curr_day
for(i in 1:stations) { ##loop over each column
max[i] <- max(stations[curr_day,curr_stn]) ##take the maximum for each column based on the number of rows for each curr_day
}
}
我也得到
Error in stations[curr_day, ] : subscript out of bounds
所以我想這意味着我的天堂沒有正確定義我的論點。如果任何人可以幫助我與這個循環適當的格式,這將非常感激!任何其他更清潔/更快的方法也將受到歡迎。 (我看着「mapply」,但無法弄清楚如何編寫定義Stat列的行數的函數作爲每個獨特Day的行數)
謝謝你的時間。
我喜歡這是一個內置的R命令,而不必進入不同的包。你介意解釋一下「」。和「〜」是爲了什麼?我假設他們以某種方式表明了論點? – abishop 2014-12-04 12:59:52
我想到「。」表示整個數據幀,但我不熟悉「〜」作爲元字符。 – abishop 2014-12-04 13:05:46