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