我需要数据操作方面的帮助。我有一个看起来像这样的大数据集。
df_old<- read.table(header = TRUE, text = "
id var1 date time var2 var3 var4
1 A 2006-08-20 09:00:00 X R V
1 A 2006-08-20 09:05:00 Y Q U
1 A 2006-09-25 10:00:00 Z R V
2 A 2007-03-29 13:00:00 X P T
2 A 2007-04-20 11:05:00 Y Q U
")
这就是我想做的事情:
这就是我希望它的样子:
df_new <- read.table(header = TRUE, text = "
id var1 date time var2 var3 var4
1 A 2006-08-20 09:00:00 X-Y R-Q V
2 A 2007-03-29 13:00:00 X P T
")
答案 0 :(得分:2)
您可以先修改var2
和var3
,然后按日期排列并仅选择slice
的第一行:
library(dplyr)
df_old %>%
group_by(id, date) %>%
mutate(var2 = paste(unlist(var2), collapse = "-"),
var3 = paste(unlist(var3), collapse = "-")) %>%
group_by(id) %>%
arrange(date) %>%
slice(1)