这是我在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