【发布时间】:2020-06-16 12:02:43
【问题描述】:
所以我想转换以下内容:
days <- c("MONDAY", "SUNDAY", "MONDAY", "SUNDAY", "MONDAY", "SUNDAY")
dates <- c("2020-03-02", "2020-03-08", "2020-03-09", "2020-03-15", "2020-03-16", "2020-03-22")
df <- cbind(days, dates)
+--------+------------+
| days | dates |
+--------+------------+
| MONDAY | 2020.03.02 |
| SUNDAY | 2020.03.08 |
| MONDAY | 2020.03.09 |
| SUNDAY | 2020.03.15 |
| MONDAY | 2020.03.16 |
| SUNDAY | 2020.03.22 |
+--------+------------+
进入这个:
+------------+------------+
| MONDAY | SUNDAY |
+------------+------------+
| 2020.03.02 | 2020.03.08 |
| 2020.03.09 | 2020.03.15 |
| 2020.03.16 | 2020.03.22 |
+------------+------------+
你有什么提示我应该怎么做吗?提前谢谢!
【问题讨论】:
-
鉴于
df是一个数据框(而不是像您的示例中那样的矩阵),您可以这样做:df <- data.frame(days, dates); unstack(df, dates ~ days) -
您可能发现 tidyr/reshape2 很难做到这一点的一个原因是,从整洁数据的角度来看,这种转换是荒谬的。在整洁的数据中,行代表相关数据。在您的输出表中,星期一和星期日看起来像两个不相关的列。如果您想采用一种整洁的方法,您需要一些方法来确定哪些日期是相关的并且应该在一行中。
-
unstack thingy 几乎可以工作,但确实需要它们在 DF 中配对。有什么诀窍吗?