【问题标题】:Run function across multiple files跨多个文件运行函数
【发布时间】:2016-04-13 16:20:42
【问题描述】:

我有 200 多个 CSV 文件。每个文件有 150 多列和 1000 多行。每个文件都以产品名称命名。 每个文件为数据集提供不同列中不同类别的不同项目的标志。其中一列是该类别中每个项目的总使用量。以下是数据集的示例:

    Values   A B C
    1        Y   
    2          Y
    3        Y   Y 
    4            Y 

我昨天问了一个问题,我收到了有关如何获得以下结果的帮助。

     Count  Sum
A      2     4
B      1     2
C      2     7

基本上,我希望计数列给我 A、B 和 C 的“y”数,而 Sum 列给我每次在 A 列中有一个“Y”时使用列中的总和、B、C

现在我对第 2 步有疑问 - 我已将所有文件放入一个文件夹中。我想做的是使用上述结果,将其应用到每个文件中,然后将答案按文件和类别分组。例如

File 1 Count A Sum A Count B Sum B Count C Sum C
File 2 Count A Sum A Count B Sum B Count C Sum C and so on. 

如何在 R 中做到这一点?我搜索了论坛,发现循环很有帮助,但我不确定如何将结果合并为一个。

【问题讨论】:

    标签: r


    【解决方案1】:

    如果您分享一个可重复的示例并且如果它是后续问题的链接到原始问题,这真的很有帮助。

    这里有一些有用的信息可以帮助你开始,然后当你遇到特定的绊脚石时,我建议你重做这个问题。

    Looping over files

    filenames = dir(pattern="*01.csv")
    for( i in 1:length(filenames) )
    {
      ...
    

    Merging data

    这确实不是一个好主意,但如果你想这样做,我想你可以试试:

    for (i in 1:10) {
      df <- rbind(df, data.frame(x = i, y = toString(i)))
    }
    

    请注意,在您的代码中,还有另一个问题:

    如果您不希望字符转换为因子,则应使用 stringsAsFactors。使用:df = data.frame(x = numeric(), y = character(), stringsAsFactors = FALSE)

    【讨论】:

    • 我尝试了循环文件,但我错过了一些东西。当我“运行”它时,它看起来确实在做某事,但我没有看到任何结果。另外,我如何获得每个文件返回的结果?
    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2017-11-23
    • 1970-01-01
    • 2017-02-17
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多