我有一个 表格(csv文件) 其中前两个属性是 百货商店 和 部 然后还有其他属性,如Date、Sales等。表如下:-
Store Dept Date Sales Holiday 1 1 ... ... ... (... means some random value) 1 1 ... ... ... 1 2 ... ... ... 1 2 ... ... ... 1 3 ... ... ... 2 1 ... ... ... 2 1 ... ... ... 2 2 ... ... ... 2 2 ... ... ...
现在,首先我将这个文件加载到一个train变量中:-
列车<-读取.csv(“train.csv”)
然后,我根据商店对其进行了划分/分组:
数据按存储<-拆分(train,train$商店)
现在,我想 数据(按存储) 并根据 部门 。因此,作为结果,我将获得 每个商店的每个部门 。我想为此,我必须初始化 大堆 数量的大小 商店 例如:dataByStoredept,每个商店 我 做
数据按存储部门[i]<-拆分(dataByStore[i],dataByStore[i]$Dept)
所以 数据按存储按部门[i][0] 将包含store i等的第一个部门数据。有人能告诉我这样做的语法吗,因为我不知道如何声明这样的2d数组。简短的解释加上几行代码就足够了。
请务必提及我的上述假设是否有误。
更新: 对于第三步,我想编写一个函数,它应该如下(这只是我不知道的语法):
dataByStoreByDept<- array(seq_len(dataByStore)) -------> seq_len(dataByStore) is the number of stores for(i in seq_len(dataByStore)){ dataByStoreByDept[i]<- split(dataByStore, dataByStore$dept) }
编造一些数据:
df <- data.frame(Store = sample(1:2, 20, replace = TRUE), Dept = sample(1:2, 20, replace = TRUE))
假设我们想要分割data.frame, df ,首先由 Store 然后由 Dept 。我们可以这样做:
df
Store
Dept
lapply(split(df, as.factor(df$Store)), FUN = function(x) split(x, x$Dept))
这个 split(df, as.factor(df$Store)) 部分进行第一次拆分 百货商店 。结果是一个列表。然后我们使用 lapply 应用 split 在由创建的列表的每个元素上 拆分(df,作为.factor(df$Store)) 。我把 分裂 将第二个拆分因子传递给 分裂 .
split(df, as.factor(df$Store))
百货商店
lapply
split
拆分(df,作为.factor(df$Store))
分裂
这将为您提供您所描述的列表列表。