【发布时间】:2011-08-30 17:13:17
【问题描述】:
我是 R 的新手,在将非常大的数据框拆分为嵌套列表时遇到问题。我试图在互联网上寻求帮助,但没有成功。
我有一个关于如何组织数据的简化示例:
标题是:
1 "station" (number)
2. "date.str" (date string)
3. "member"
4. "forecast time"
5. "data"
我不确定我的数据示例是否会正确显示,但如果是这样,它看起来像这样:
1. station date.str member forecast.time data1
2. 6019 20110805 mbr000 06 77
3. 6031 20110805 mbr000 06 28
4. 6071 20110805 mbr000 06 45
5. 6019 20110805 mbr001 12 22
6. 6019 20110806 mbr024 18 66
我想在“station”、“member”、“date.str”和“forecast.time”之后将大数据框拆分成一个嵌套列表。因此 mylist[[c(s,m,d,t)]] 包含一个数据框,其中包含站 "s" 的数据和 date.str "d" 的成员 "m" 和预测时间 "t" 的数据,保存值s、m、d 和 t。
我的代码是:
data.st <- list()
data.st.member <- list()
data.st.member.dato <- list()
data.st. <- split(mydata, mydata$station)
data.st.member <- lapply(data.st, FUN = fsplit.member)
(我创建了一个在“成员”之后拆分的函数)
#Loop over station number:
for (s in 1:S){
#Loop over members:
for (m in 1:length(members){
tmp <- split( data.st.member[[s]][[m]], data.st.member[[s]][[m]]$dato.str )
#Loop over number of different "date.str"s
for (t in 1:length(no.date.str) ){
data.st.member.dato[[s]][[m]][[t]] <- tmp}
} #end m loop
} #end s loop
我也想根据预测时间进行拆分:forec.time,但我没有做到。
我在循环中尝试了几种不同的配置,所以我目前没有一致的错误消息。我无法弄清楚,我在做什么或想错了什么。
非常感谢任何帮助!
问候 西塞
【问题讨论】:
-
我不愿意帮你做这件事,因为我相信嵌套列表比你的原始数据框更难处理。为什么需要将看起来组织良好的数据框拆分为嵌套列表?
-
感谢帮助和cmets!数据由预测累积降水的时间序列组成。对于每个站号 (s),对于一组预报 (m) 的每个成员,以及对于每个预报时间 (t),我需要获取降水的时间序列。从 precipitation 的值可以看出我弄错了,除非我除以所有值:s、m、d 和 t。