【发布时间】:2015-06-19 14:17:43
【问题描述】:
假设我有一个数据框:
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
2 "hello"
2 "hi"
现在我想为 id 列中的每个不同值获取一个单独的数据框。
df1
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
and df2
id value
2 "hello"
2 "hi"
如何在 R 中有效地实现这一点?
我试着做for循环
df <- data.frame(id=c('1','1','1','1','2','2'),value=c('hi','hi','hi again','hi again','hello','hi'))
for (i in 1:length(unique(df$id))) {
df1 <- df[unique(df$id)[i],]
print(df1)
}
但结果是
id value
1 1 hi
id value
2 1 hi
我了解 apply 系列对数据框中的每一行都执行相同的操作,但在这种情况下我无法使用它们。可能是我遗漏了一些明显的东西吗?
【问题讨论】:
-
试试
split(df, df$id) -
这就像一个魅力。感谢您的快速回复。
-
@JayBlack 拆分但不将单独的数据框保存在单独的对象中。看起来发布的代码是为了达到这个目的。
-
@SabDeM 最好将所有数据框放在一个列表中,而不是在全局环境中使用单独的对象。对于单独的对象,只需在命名列表元素后用
list2env包装 -
我并不是说什么更好或不好。我只是在暗示我认为 Shiva 的意图。
标签: r frame subset data-manipulation