Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R table()输出到csv文件_R_Write.table - Fatal编程技术网

R table()输出到csv文件

R table()输出到csv文件,r,write.table,R,Write.table,我使用R函数,table()和write.table(),分别计算单元格数并保存到本地方向作为.csv文件。 但有两个问题: 生成的表的标题是一组月份,但排名根据首字母,而不是日历月份顺序。 我知道一个解决方案是将月份分解,但是,数据包括40多个月。 那么,有没有其他解决办法 生成的表格标题长度比表格宽度小一个,因此,在.csv文件中,标题不适合其列,而适合下一列 TabCDY在这种情况下,您可能会发现使用data.frame(或类似于data.table)更容易 由于排序应该是自动完成的,所以

我使用R函数,table()和write.table(),分别计算单元格数并保存到本地方向作为.csv文件。 但有两个问题:

  • 生成的表的标题是一组月份,但排名根据首字母,而不是日历月份顺序。
    我知道一个解决方案是将月份分解,但是,数据包括40多个月。
    那么,有没有其他解决办法

  • 生成的表格标题长度比表格宽度小一个,因此,在.csv文件中,标题不适合其列,而适合下一列


  • TabCDY在这种情况下,您可能会发现使用
    data.frame
    (或类似于
    data.table
    )更容易

    由于排序应该是自动完成的,所以月数对于因子分解来说并不重要

    样本数据:

    library(data.table)
    NN = 1e5
    set.seed(39439)
    DT = data.table(
      CounterID = sample(LETTERS, NN, TRUE),
      # integer values of 2019-01-01 -> 2019-12-31
      date = format(.Date(sample(17897:18261, NN, TRUE)), '%Y %b')
    )
    
    您可以尝试:

    # old approach
    table(DT$CounterID, DT$date)
    
    # suggested approach
    levels = unique(DT$date)
    # %Y %b is not enough for as.Date, we have to manually supply the day too
    levels_date = as.Date(paste(levels, '01'), format = '%Y %b %d')
    # sort by the order as a Date (i.e. chronologically)
    levels = levels[order(levels_date)]
    # levels determines the sorting order
    DT[ , date := factor(date, levels = levels)]
    # dcast automatically uses this sorting order
    TabCDY = DT[ , dcast(.SD, CounterID ~ date, fun.aggregate = length)]
    #output to file
    fwrite(TabCDY, 'Tab_CounterDayNumber_Year.csv')
    
    # old approach
    table(DT$CounterID, DT$date)
    
    # suggested approach
    levels = unique(DT$date)
    # %Y %b is not enough for as.Date, we have to manually supply the day too
    levels_date = as.Date(paste(levels, '01'), format = '%Y %b %d')
    # sort by the order as a Date (i.e. chronologically)
    levels = levels[order(levels_date)]
    # levels determines the sorting order
    DT[ , date := factor(date, levels = levels)]
    # dcast automatically uses this sorting order
    TabCDY = DT[ , dcast(.SD, CounterID ~ date, fun.aggregate = length)]
    #output to file
    fwrite(TabCDY, 'Tab_CounterDayNumber_Year.csv')