簡體   English   中英

從列表中的多個 df 中提取每個 ID 元素,然后創建新的 df,顯示 ID 是 r 列表中的一部分的每個 df

[英]Extract every ID element from multiple df in list and then create new df showing each df the ID was a part of in the list in r

我需要定期提供多個數據幀中的特定 ID 列表。 我還需要識別 ID 所在的每個數據幀。它可能是一個,也可能是所有數據幀。 這些多個數據幀位於僅由這些數據幀組成的列表中。

需要考慮的要點:

  1. 這些列表已經從之前的過程中創建,我嫁給了他們
  2. 列表中的每個數據框都將被命名,該名稱是我需要的,作為 desired_result 文件中的列名
  3. 列表中的 dfs 從列表到列表或運行到運行不一致,這導致我無法通過此操作。
  4. 目標是在“desired_results”中顯示哪些 ID 在多個數據幀中以及哪些特定的 ID
  5. 我不喜歡結果格式。 任何傳達信息的東西都會起作用。
#creates list
name <- c("Bill","Fred","Bob","John","Tom","Larry")
ID <- as.character(c(123,345,456,567,678,789))
df <- data.frame(name,ID)
bosses <- df[1:2,]
coworkers <- df[3:6,]
losers <- df[2:4,]
the_list <- list(bosses,coworkers,losers)
newnames <- c("bosses","coworkers","losers")
names(the_list) <- newnames

#creates desired results
a <- c("x","x",NA,NA,NA,NA)
b <- c(NA,NA,"x","x","x","x")
c <- c(NA,"x","x","x",NA,NA)
desired_result <- data.frame(ID,a,b,c)
colnames(desired_result) <- c("ID","bosses","coworkers","losers")

#clean up
remove(bosses)
remove(coworkers)
remove(df)
remove(losers)
remove(a)
remove(b)
remove(c)
remove(ID)
remove(name)
remove(newnames)

我做了 go 並確認列表中的每個元素都已命名。 如果這很重要,該值將顯示為 tibble,但我的印象是所有表格格式數據都是列表中的 tibble。

用於調試的附加代碼:是的,我已經在我的代碼中確認了大小寫和拼寫。

bind_rows(passes, .Reference_ID = 'grp') %>% pivot_wider(names_from = grp, values_from = Authentication_Status)

我們可以將它們綁定在單個數據中並使用pivot_wider

library(dplyr)
library(tidyr)
bind_rows(the_list, .id = 'grp') %>%
   pivot_wider(names_from = grp, values_from = name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM