如何获得多个数据框,其中一列包含另一列中元素的频率?

问题描述 投票:0回答:1

我有一个包含 40 个数据帧(元素)的列表“df_list”,在结构下方:

df_list[[1]] = 列表的第一个数据框

id 日期
2345 2022-12-01 12:52
4234 2022-12-01 12:52
2423 2022-12-01 12:53
2434 2022-12-01 12:53
3433 2022-12-01 12:53
5432 2022-12-01 13:54
4534 2022-12-01 14:55
3243 2022-12-01 15:55

我期望的(新数据框):

频率 日期
2 2022-12-01 12:52
3 2022-12-01 12:53
1 2022-12-01 13:54
2 2022-12-01 15:55

我想对列表中的每个数据框执行此操作并获取“新”数据框列表。

list <- list()
for (i in length(df_list)) {
list[[i]]  <- (count(df_list[[i]], "Date"))
name <- paste("Df",  myfiles_1, sep = "_")
result <- assign(name, list)

}

额外信息:日期数据是 POSIXlt 类

r dataframe rstudio cluster-analysis
1个回答
0
投票

给定

my_list
两个数据框,我们可以:

基地R:

lapply(my_list, function(x) count(x, Date, name = "Frequency"))

Tidyverse:

library(purrr)
map(my_list, count, Date, name = "Frequency")
$df1
              Date Frequency
1 2022-12-01 12:52         2
2 2022-12-01 12:53         3
3 2022-12-01 13:54         1
4 2022-12-01 14:55         1
5 2022-12-01 15:55         1

$df2
              Date Frequency
1 2022-12-01 12:42         2
2 2022-12-01 12:43         3
3 2022-12-01 13:44         1
4 2022-12-01 14:45         1
5 2022-12-01 15:45         1

名单:

my_list <- list(df1 = structure(list(id = c(2345L, 4234L, 2423L, 2434L, 
3433L, 5432L, 4534L, 3243L), Date = c("2022-12-01 12:52", "2022-12-01 12:52", 
"2022-12-01 12:53", "2022-12-01 12:53", "2022-12-01 12:53", "2022-12-01 13:54", 
"2022-12-01 14:55", "2022-12-01 15:55")), class = "data.frame", row.names = c(NA, 
-8L)), df2 = structure(list(id = c(2345L, 4234L, 2423L, 2434L, 
3433L, 5432L, 4534L, 3243L), Date = c("2022-12-01 12:42", "2022-12-01 12:42", 
"2022-12-01 12:43", "2022-12-01 12:43", "2022-12-01 12:43", "2022-12-01 13:44", 
"2022-12-01 14:45", "2022-12-01 15:45")), class = "data.frame", row.names = c(NA, 
-8L)))
© www.soinside.com 2019 - 2024. All rights reserved.