【发布时间】:2021-11-25 09:32:17
【问题描述】:
我有以下数据:
id <- c(1,1,1,1,2,2,2,2,2,2)
date <-as.Date(c("2007-06-22", "2007-06-22", "2007-07-13","2007-07-13",
"2019-10-05", "2019-10-05", "2019-11-07", "2019-11-07",
"2007-06-22","2007-06-22"))
value <-c(0,3,2,4,0,1,4,2,6,8)
mydata_1 <- data.frame(id, date, value)
mydata_1
id date value
1 2007-06-22 0
1 2007-06-22 3
1 2007-07-13 2
1 2007-07-13 4
2 2019-10-05 0
2 2019-10-05 1
2 2019-11-07 4
2 2019-11-07 2
2 2007-06-22 6
2 2007-06-22 8
我希望数据看起来像这样:
id <- c(1,1,2,2,2)
date <-as.Date(c("2007-06-22", "2007-07-13", "2019-10-05", "2019-11-07","2007-06-22"))
value.1 = c(0,2,0,4,6)
value.2 = c(3,4,1,2,8)
mydata_2 <- data.frame(id, date, value.1, value.2)
mydata_2
id date value.1 value.2
1 2007-06-22 0 3
1 2007-07-13 2 4
2 2019-10-05 0 1
2 2019-11-07 4 2
2 2007-06-22 6 8
我从 (Reshaping data matrix in R) 尝试过,但由于两个不同 ID 中的某些日期相同,因此无法按预期工作
dateno <- with(mydata_1, ave(id, date, FUN = seq_along))
test2 <- transform(mydata_1, dateno = dateno)
reshape(test2, dir = "wide", idvar = c("id","date"), timevar = "dateno")
【问题讨论】:
-
为什么要在结果中包含 id 列?每个日期和 ID 只有两个值,对吗?所以在你的结果中,每个日期只有一行,而不是每个 ID?
-
感谢您的提示。我试图用 pivot_wider 解决它,但没有运气。在“真实数据”中,我使用的“价值”列代表了在不同日期填写的 34 项自我评估表上的答案。所以我需要知道:谁给表格打分(id)分数是多少(值)以及每个人给表格打分的日期(日期)。