我有一个如下所示的数据框:
index ID date Amount
2 1001 2010-06-08 0
21 1001 2010-10-08 10
6 1002 2010-08-16 30
5 1002 2010-11-25 20
9 1003 2010-01-01 0
8 1003 2011-03-06 10
12 1004 2012-03-12 10
11 1004 2012-06-21 10
15 1005 2010-01-01 30
13 1005 2010-04-06 20
我想对这些数据进行子集化,以便获得新的数据框,每个 ID 对应一个数据框,如下所示
index ID date Amount
2 1001 2010-06-08 0
21 1001 2010-10-08 10
And
6 1002 2010-08-16 30
5 1002 2010-11-25 20
等等。
我不需要保存新的数据框,而是用它来执行一些基本计算。另外,我想在包含超过 10000 个 ID 的整个表上执行此操作,因此需要一个循环。我试过这个
temp <- data.frame(Numb=c(),Dt=c(),Amt=c())
for (i in seq_along(stNew$ID)){
temp[i,] <- subset(stNew, stNew[i,]==stNew$ID[i])
}
但这没有用。有什么建议么?
看看list2env and split功能。这里有一些使用 iris 数据集的例子。
Two way:
list_df <- split(iris, iris$Species) #split the dataset into a list of datasets based on the value of iris$Species
list2env(list_DF, envir= .GlobalEnv) #split the list into separate datasets
One way:
list2env(split(iris, iris$Species), envir = .GlobalEnv)
或者您可以使用以下命令为新数据集指定自定义名称for
loop:
iris_split <- split(iris, iris$Species)
new_names <- c("one", "two", "three")
for (i in 1:length(iris_split)) {
assign(new_names[i], iris_split[[i]])
}
更新示例
相关帖子
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)