मैं प्रत्येक कॉलम में एक अलग फ़ंक्शन लागू करने, समय अंतराल द्वारा डेटा फ्रेम एकत्र करना चाहता हूं। मुझे लगता है कि मेरे पास लगभग aggregate
नीचे है, और chron
पैकेज के साथ अंतराल में अपना डेटा बांटा है, जो कि काफी आसान था।आर: कॉलम-विशिष्ट फ़ंक्शन के साथ कुल
लेकिन मुझे यकीन नहीं है कि सबसेट को कैसे संसाधित किया जाए। सभी मैपिंग फ़ंक्शंस, *apply
, *ply
, एक फ़ंक्शन लें (मैं ऐसी चीज की उम्मीद कर रहा था जो प्रति कॉलम लागू करने के लिए फ़ंक्शन का वेक्टर लेता था या उपलब्ध नहीं था, लेकिन एक नहीं मिला) इसलिए मैं एक ऐसा फ़ंक्शन लिख रहा हूं जो लेता है मेरा डेटा फ्रेम सबसेट, और मुझे "समय" को छोड़कर सभी चर के लिए मतलब देता है, जो इंडेक्स है, और "रनऑफ" जो योग होना चाहिए।
मैं इस कोशिश की:
aggregate(d., list(Time=trunc(d.$time, "00:10:00")), function (dat) with(dat,
list(Time=time[1], mean(Port.1), mean(Port.1.1), mean(Port.2), mean(Port.2.1),
mean(Port.3), mean(Port.3.1), mean(Port.4), mean(Port.4.1), Runoff=sum(Port.5))))
जो बदसूरत पर्याप्त भले ही वह मुझे इस त्रुटि नहीं दिया होगा:
Error in eval(substitute(expr), data, enclos = parent.frame()) :
not that many frames on the stack
जो मुझसे कहता है मैं वास्तव में कुछ गलत कर रहा हूँ। मैंने आर के बारे में जो देखा है, उससे मुझे लगता है कि ऐसा करने का एक शानदार तरीका होना चाहिए, लेकिन यह क्या है?
dput:
d. <- structure(list(time = structure(c(15030.5520833333, 15030.5555555556,
15030.5590277778, 15030.5625, 15030.5659722222), format = structure(c("m/d/y",
"h:m:s"), .Names = c("dates", "times")), origin = structure(c(1,
1, 1970), .Names = c("month", "day", "year")), class = c("chron",
"dates", "times")), Port.1 = c(0.359747, 0.418139, 0.417459,
0.418139, 0.417459), Port.1.1 = c(1.3, 11.8, 11.9, 12, 12.1),
Port.2 = c(0.288837, 0.335544, 0.335544, 0.335544, 0.335544
), Port.2.1 = c(2.3, 13, 13.2, 13.3, 13.4), Port.3 = c(0.253942,
0.358257, 0.358257, 0.358257, 0.359002), Port.3.1 = c(2,
12.6, 12.7, 12.9, 13.1), Port.4 = c(0.352269, 0.410609, 0.410609,
0.410609, 0.410609), Port.4.1 = c(5.9, 17.5, 17.6, 17.7,
17.9), Port.5 = c(0L, 0L, 0L, 0L, 0L)), .Names = c("time",
"Port.1", "Port.1.1", "Port.2", "Port.2.1", "Port.3", "Port.3.1",
"Port.4", "Port.4.1", "Port.5"), row.names = c(NA, 5L), class = "data.frame")
ठीक है, मुझे लगता है कि मैं इसे थोड़ा बेहतर समझता हूं। मैं दृढ़ता से टाइप की गई भाषाओं के लिए प्रयोग किया जाता हूं और आर की कक्षा-जबरन योजना को भ्रमित कर रहा हूं। मैं यह भी जानना चाहूंगा कि क्या अधिकांश कॉलम का मतलब लेने का एक आसान तरीका है, लेकिन स्पष्ट रूप से इसे किए बिना, विशेष रूप से इसका इलाज करें। क्या मुझे डीएफ को अलग करना होगा और फिर स्तंभों को फिर से संयोजित करना होगा? – scry