我是 R 的新手。
我有一個包含可變大小串列的資料框。請參閱最后的 dput(head()) 輸出以了解具體資訊。我需要根據“名稱”屬性匯總資料。例如,名稱“MicroPro #1”在下面出現了 3 次。我想生成一個包含所有名稱的表格以及每個名稱在資料中出現的次數。建議?
dput(head(temp))
list(structure(list(resource = structure(list(`_class` = c("resource",
"resource"), oid = c(58742483L, 58744672L), name = c("MicroPro #1",
"Speedlite Stand"), barcode = c("AAU12902",
"PH0013204")), class = "data.frame", row.names = 1:2)), class = "data.frame", row.names = 1:2),
structure(list(resource = structure(list(`_class` = c("resource",
"resource", "resource"), oid = c(1869868L, 24568359L, 41439810L
), name = c("Brushes_2", "MicroPro #1", "Ceramics _01"
), barcode = c("1910.012", "1149.033", NA)), class = "data.frame", row.names = c(NA,
3L))), class = "data.frame", row.names = c(NA, 3L)), structure(list(
resource = structure(list(`_class` = "resource", oid = 52952320L,
name = "MIDI Lab 01", barcode = NA), class = "data.frame", row.names = 1L)), class = "data.frame", row.names = 1L),
structure(list(resource = structure(list(`_class` = c("resource",
"resource", "resource", "resource"), oid = c(2195740L, 2197584L,
1688545L, 61592833L), name = c("Extension Cord", "Soldering Iron",
"Scale_Cs", "MicroPro #1"
), barcode = c("16.012", "16326.002", "BUSH16312.001", NA
)), class = "data.frame", row.names = c(NA, 4L))), class = "data.frame", row.names = c(NA,
4L)), structure(list(resource = structure(list(`_class` = "resource",
oid = 58745398L, name = "Computer Station #03",
barcode = NA), class = "data.frame", row.names = 1L)), class = "data.frame", row.names = 1L),
structure(list(resource = NA), class = "data.frame", row.names = 1L))
uj5u.com熱心網友回復:
答案有點長,但(恕我直言)非常易讀/適應性強
library(tidyverse)
L %>%
bind_rows() %>%
unlist(recursive = FALSE) %>%
as.data.frame() %>%
group_by(resource.name) %>%
summarise(total = n())
# # A tibble: 10 × 2
# resource.name total
# <chr> <int>
# 1 Brushes_2 1
# 2 Ceramics _01 1
# 3 Computer Station #03 1
# 4 Extension Cord 1
# 5 MicroPro #1 3
# 6 MIDI Lab 01 1
# 7 Scale_Cs 1
# 8 Soldering Iron 1
# 9 Speedlite Stand 1
#10 NA 1
uj5u.com熱心網友回復:
table(unlist(lapply(my_list,\(x)if(is.data.frame(y<-x$resource)) y$name)))
Brushes_2 Ceramics _01 Computer Station #03 Extension Cord MicroPro #1
1 1 1 1 3
MIDI Lab 01 Scale_Cs Soldering Iron Speedlite Stand
1 1 1 1
你也可以這樣做:
table(subset(stack(unlist(my_list)), grepl('name', ind), values, drop = TRUE))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/494885.html
