【发布时间】:2019-03-18 03:29:10
【问题描述】:
我正在处理一组文档,需要将 groupby 和子集自动化到新文件中。我可以手动完成此操作,但有超过 200 个文档,每个文档大约有 45,000 个观察值,从而产生超过 1,000 个文档。我的想法是对于我的 df 中唯一值的每个实例,将具有该唯一名称的所有值保存到具有该名称的 df 中。在以下示例中,我现在将有 3 个数据帧,称为:ferrari、ford 和 audi。
value <- c(1:10)
name <- c("ferrari","ferrari","ferrari","ford","ford","ford","ford","audi","audi","audi")
data <- data.frame(value,name)
uniques <- unique(data$name)
for(file in uniques){
file <- subset(data, data$Name == file)
}
这只会产生一个名为 df 的文件,其中包含 0 个观察值。我还尝试了长度为 df 的 i 的法线。非常感谢任何帮助 - 我绝对不习惯编写 for 循环。
【问题讨论】:
-
我想你只是想要
split(x = data,f = data$name)。从广义上讲,在 R 中创建许多具有不同名称的独立但相关的对象是不好的做法。最好将它们全部放在一个列表中。您可以使用names()更改列表元素的名称。 -
您能否详细说明您的预期结果是什么?我真的不关注。
-
@Roman 结果将是三个数据帧:1 个命名为 ferrari,仅包含来自 ferrari 的值,1 个命名为 for,仅包含来自 ford 的值,1 个命名为 audi,仅包含来自 audi 的值
-
我的建议仍然有效。循环通过
split创建的单个列表并将每个元素保存为 excel 文件很简单。更好的是,您可以遍历名称,按名称选择每个元素并在结果文件中使用该名称。容易得多。 -
@MichaelCantrall 感谢您的澄清!现在我明白了。您的方法也应该有效。您的循环应该遍历
uniques[i]以获取uniques的所有实例。
标签: r