Вот как получить ваш список в структурированном df, предполагая, что read.csv считывает все в список, структурированный аналогично моему. Если ваши данные уже имеют структуру, аналогичную той, которая изображена в образце, см. Последнюю часть этого ответа.
Очистка данных и структурирование из списка типов:
library(stringr)
#Loaded CSV Data in list
list1<-list(
"6/7/17", "ml12308sASd",
"8/28/17","Mloasjdiaosjd1028knsd",
"mlsaj19209s", "asd12122sda",
"8/28/17","Amandas-macbook.local",
"9/13/18", "john-deers_win.local"
)
list2<-unlist(list1)
#Collapse to one string
list3<-paste(list2, collapse=' ')
#Find groups for users
users<-regmatches(list3,gregexpr("(?<=\\d\\/..\\s)(.*?)(?=(..\\/..\\/)|($))",list3, perl=T))
#Unlist to index
users<-unlist(users)
#Split individual users per group
users<-strsplit(users, "\\s+")
#Concatenate group individuals, separated with comma
for(i in 1:length(users)){
users[i]<-str_c(users[[i]], sep="", collapse=", ")
}
#Re-unlist as concatenate lsited
users<-unlist(users)
#Grab dates from main string
dates<-regmatches(list3,gregexpr("(..|.)\\/(..|.)\\/..",list3, perl=T))
#Unlist Dates
dates<-unlist(dates)
#Put into data frame
df<-data.frame(dates,users)
> df
dates users
1 6/7/17 ml12308sASd
2 8/28/17 Mloasjdiaosjd1028knsd, mlsaj19209s, asd12122sda
3 8/28/17 Amandas-macbook.local
4 9/13/18 john-deers_win.local
Агрегат на основе даты
#Ensure dates are correct class for aggregation
df$dates<-as.POSIXct(df$dates, format="%m/%d/%y")
#Aggregate based on date, paste used as function
Data_Fin <- aggregate(x = df["users"],
FUN=paste,
by = df["dates"])
> Data_Fin
dates users
1 2017-06-07 ml12308sASd
2 2017-08-28 Mloasjdiaosjd1028knsd, mlsaj19209s, asd12122sda, Amandas-macbook.local
3 2018-09-13 john-deers_win.local