根据R中的值进行动态子集划分
我有一个具有下一个结构的数据帧根据R中的值进行动态子集划分,r,dynamic,subset,R,Dynamic,Subset,我有一个具有下一个结构的数据帧 Id Flag value1 value2 123 1 10 3.4 124 1 5 1.2 125 0 19 8.4 126 1 8 1.2 127 0 17 6.5 128 2 1 -6.5 我
Id Flag value1 value2
123 1 10 3.4
124 1 5 1.2
125 0 19 8.4
126 1 8 1.2
127 0 17 6.5
128 2 1 -6.5
我需要仅根据列的名称将数据帧分为“n”个子集,其中“n”是列的不同值,我希望如下所示:
dataframe1
Id Flag value1 value2
123 1 10 3.4
124 1 5 1.2
126 1 8 1.2
dataframe2
Id Flag value1 value2
125 0 19 8.4
127 0 17 6.5
dataframe3
Id Flag value1 value2
128 2 1 -6.5
因为这是在函数内部进行的,所以我只知道列的名称和它可以接受的不同值,我尝试了:
dataFrame$column==value
但是我需要对每个值都这样做,并且这些值的长度是动态的,这取决于列的名称
提前谢谢这里,斯普利特是你的朋友
splitbycol <- function(df, colname) {
split(df, df[[colname]])
}
splitbycol(df, "Flag")
## $`0`
## Id Flag value1 value2
## 3 125 0 19 8.4
## 5 127 0 17 6.5
##
## $`1`
## Id Flag value1 value2
## 1 123 1 10 3.4
## 2 124 1 5 1.2
## 4 126 1 8 1.2
##
## $`2`
## Id Flag value1 value2
## 6 128 2 1 -6.5
然后,如果您想使每个数据帧成为一个单独的变量,请调用
subdf <- splitbycol(df, "Flag")
for (i in seq_along(subdf))
assign(paste0("df", i), subdf[[i]])
df1
## Id Flag value1 value2
## 3 125 0 19 8.4
## 5 127 0 17 6.5
这里,斯普利特是你的朋友
splitbycol <- function(df, colname) {
split(df, df[[colname]])
}
splitbycol(df, "Flag")
## $`0`
## Id Flag value1 value2
## 3 125 0 19 8.4
## 5 127 0 17 6.5
##
## $`1`
## Id Flag value1 value2
## 1 123 1 10 3.4
## 2 124 1 5 1.2
## 4 126 1 8 1.2
##
## $`2`
## Id Flag value1 value2
## 6 128 2 1 -6.5
然后,如果您想使每个数据帧成为一个单独的变量,请调用
subdf <- splitbycol(df, "Flag")
for (i in seq_along(subdf))
assign(paste0("df", i), subdf[[i]])
df1
## Id Flag value1 value2
## 3 125 0 19 8.4
## 5 127 0 17 6.5
另一种避免循环的方法
另一种避免循环的方法
另外,值得一提的是,最好将data.frame保存在一个列表中,而不是作为全局名称空间中的独立变量。谢谢你的建议,你是说我应该有一个dataFrameList,其中每个条目都是一个数据框?还有,值得一提的是,最好将数据保存在一个列表中,而不是在全局命名空间中作为一个单独的变量。谢谢你的建议,所以你是说我应该有一个dataFrameList,其中每个条目都是一个数据框?非常感谢,这完全解决了问题!非常感谢,这完全解决了问题!