给定格式的原始 Dataframe df
Date Cat
<POSIXct> <chr>
1 2019-10-3 A
2 2019-10-3 A
3 2019-10-3 B
4 2019-10-4 A
5 2019-10-4 C
6 2019-10-4 C
7 2019-10-4 C
8 2019-10-5 B
9 2019-10-5 C
我执行df_table <- table(df)
运算得到df_table
的形式
Cat
Date A B C
2019-10-3 2 1 0
2019-10-4 1 0 3
2019-10-5 0 1 1
因为我需要按Date
分组的每个Cat
的计数。
我需要将表转换为 Dataframe ,并使用值进行绘图。但是当尝试as.data.frame.matrix(df_table)
时,它给出了输出
A B C
<int> <int> <int>
2019-10-3 2 1 0
2019-10-4 1 0 3
2019-10-5 0 1 1
而我想要的是
Date A B C
<POSIXct> <int> <int> <int>
2019-10-3 2 1 0
2019-10-4 1 0 3
2019-10-5 0 1 1
我想保留表中的第一列作为转换后的 Dataframe 中的一列。我还想保留数据类型。在应用table
时,日期似乎会变成一个chr对象,而不是原来的POSIX对象。
3条答案
按热度按时间jxct1oxe1#
基于您的方法,可以进一步使用
tibble::rownames_to_column()
:或者以另一种方式使用
tidyr::pivot_wider()
和values_fn = length
进行计数:tcomlyy62#
如果要绘制. https://www.statology.org/long-vs-wide-data/,可能需要将其保留为长格式
zmeyuzjn3#
table()
结果中的这些日期是行名称,因此它们不构成列,尽管您可以将该向量cbind()
到结果data.frame并将其转换回POSIXct
:还有
as.data.frame.table()
,日期仍然是字符串,因为它们来自行名称:但你可能会发现,计算和调整自己更容易:
示例数据:
创建于2023年2月25日,使用reprex v2.0.2