在R中有没有一种方法可以将组中的各种项目转换为多个列?
假设我有这样一个数据帧:在R中有没有一种方法可以将组中的各种项目转换为多个列?,r,R,假设我有这样一个数据帧: df<-data.frame(group=c(1, 1, 1, 1, 1,1, 2, 2, 2,2,2,2, 3,3,3,3,3,3), date=c("2000-01-01", "2000-01-02", "2000-01-01", "2000-01-02", "2000-01-01", "2000-01-01", "2000-01-03", "2000-01-04", "2000-01
df<-data.frame(group=c(1, 1, 1, 1, 1,1, 2, 2, 2,2,2,2, 3,3,3,3,3,3),
date=c("2000-01-01", "2000-01-02", "2000-01-01", "2000-01-02", "2000-01-01", "2000-01-01",
"2000-01-03", "2000-01-04", "2000-01-05", "2000-01-03", "2000-01-04", "2000-01-05",
"2000-01-06", "2000-01-06", "2000-01-02", "2000-01-05", "2000-01-02", "2000-01-03"))
group date want_1 want_2 want_3 want_4
1 1 2000-01-01 2000-01-01 2000-01-02 <NA> <NA>
2 1 2000-01-02 2000-01-01 2000-01-02 <NA> <NA>
3 1 2000-01-01 2000-01-01 2000-01-02 <NA> <NA>
4 1 2000-01-02 2000-01-01 2000-01-02 <NA> <NA>
5 1 2000-01-01 2000-01-01 2000-01-02 <NA> <NA>
6 1 2000-01-01 2000-01-01 2000-01-02 <NA> <NA>
7 2 2000-01-03 2000-01-03 2000-01-04 2000-01-05 <NA>
8 2 2000-01-04 2000-01-03 2000-01-04 2000-01-05 <NA>
9 2 2000-01-05 2000-01-03 2000-01-04 2000-01-05 <NA>
10 2 2000-01-03 2000-01-03 2000-01-04 2000-01-05 <NA>
11 2 2000-01-04 2000-01-03 2000-01-04 2000-01-05 <NA>
12 2 2000-01-05 2000-01-03 2000-01-04 2000-01-05 <NA>
13 3 2000-01-06 2000-01-06 2000-01-02 2000-01-05 2000-01-03
14 3 2000-01-06 2000-01-06 2000-01-02 2000-01-05 2000-01-03
15 3 2000-01-02 2000-01-06 2000-01-02 2000-01-05 2000-01-03
16 3 2000-01-05 2000-01-06 2000-01-02 2000-01-05 2000-01-03
17 3 2000-01-02 2000-01-06 2000-01-02 2000-01-05 2000-01-03
18 3 2000-01-03 2000-01-06 2000-01-02 2000-01-05 2000-01-03
df所以我创建了date\u a
date_a <- c("2000-01-01", "2000-01-02", "2000-01-03", "2000-01-04")
date_a <- data.frame(want = c("want_1", "want_2", "want_3", "want_4"),date_a = as.Date(date_a))
crossing(df,date_a) %>%
mutate(flg = as.numeric(date < date_a)) %>%
select(-date_a) %>%
distinct() %>%
spread(want,flg)
date\u a%
选择(-date_a)%>%
不同的()%>%
蔓延(匮乏,flg)
现在数据的缺点是有多余的行,而distinct
功能将消除原始数据中的重复行 另一个时间变量/数据集是什么样子的?我有一个想法,但这取决于您想要进行比较的方式。实际上,这只是另一个日期变量。'“时间”可能不是最好的描述,我只是不想把人们与上面的单独变量和日期变量混淆。另一个日期(我们称之为date_a)是连续的几天(即,一行是2000-01-01,下一行是2000-01-02,等等)。我想标记want_1 want_2等中的任何单元格小于date_a中的单元格的行